find(a,a+8,4)的输出问题,急(20分)立即结贴

zhfj001 2008-11-26 07:01:37
#include < iostream>
#include < algorithm>
#include < functional>
using namespace std;
void main()
{
int a[]={1,2,3,4,5,6,7,8},b[8];
int *find1=find(a,a+8,4);
cout<<"数组a中'4'的位置是:"<<*find1<< endl;//查找4的位置
copy(a,a+8,b);//将数组a复制给数组b
reverse_copy(b,b+8,a);//把数组b,逆向复制给a,完成a的逆转
cout<<"数字a的内容:"<< endl;
for(int i=0;i<8;i++)
cout<< a[i]<<" ,";
cout<<endl;
int *find2=find(a,a+8,4);
cout<<"数组a反转后,'4'的位置是:"<<*find2<< endl;//在查找4的位置
cout<<"\n数组b中的内容:"<< endl;
for(i=0;i<8;i++)
cout<< b[i]<<" ,";
}
问题:*find1的输出是4,而*find2的输出也是4,为什么,我感觉应该是5,感谢。
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagegz 2008-11-26
  • 打赏
  • 举报
回复
find()用于搜寻无序集合中是否存在某值.如果找到目标,find()会返回一个iterator指向该值.
所以cout<<*find会输出你所需要查找到的值!
所以输出结果并不是你所需要查找到的位置.
toadzw 2008-11-26
  • 打赏
  • 举报
回复
copy不会改变原对象的数据,会有一个中间变量存存储你的reverse结果,再将这个结果copy罢了;
sagegz 2008-11-26
  • 打赏
  • 举报
回复
函数问题!
就呆在云上 2008-11-26
  • 打赏
  • 举报
回复
find2应该是返回逆转之后的4的位置,对吧,那就应该是5.我还是不明白


返回的是4的指针,这个是一个地址值
不是4的位置的值!
在stl的算法里面一般都是返回迭代器或者指针
qoxqjrsiekx 2008-11-26
  • 打赏
  • 举报
回复
*find2就是指向4的指针,那不返回4还能返回5啊
zhfj001 2008-11-26
  • 打赏
  • 举报
回复
因为逆转之后是这样的输出:
8,7,6,5,4,3,2,1
4就是在第5个位置,不应该输出5吗?
zhfj001 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ztz0223 的回复:]
find返回的是查到的对象的指针
你找到的是4
那么4这个对象的指针的值不就是4啊?
[/Quote]
find2应该是返回逆转之后的4的位置,对吧,那就应该是5.我还是不明白
giftfish 2008-11-26
  • 打赏
  • 举报
回复

#include < iostream>
#include < algorithm>
#include < functional>
using namespace std;
int main()
{
int a[]={1,2,3,4,5,6,7,8},b[8];
int *find1=find(a,a+8,4);
cout <<"数组a中'4'的位置是:" <<*find1 << endl;//查找4的位置
copy(a,a+8,b);//将数组a复制给数组b
reverse_copy(b,b+8,a);//把数组b,逆向复制给a,完成a的逆转
cout <<"数字a的内容:" << endl;
for(int i=0;i <8;i++)
cout << a[i] <<" ,";
cout <<endl;
//int *find2=find(a,a+8,4);
cout <<"数组a反转后,'4'的位置是:" <<*find1 << endl;//在查找4的位置
cout <<"\n数组b中的内容:" << endl;
for(i=0;i <8;i++)
cout << b[i] <<" ,";
return 0;
}


这样就是5了
cyj626 2008-11-26
  • 打赏
  • 举报
回复
是啊
就呆在云上 2008-11-26
  • 打赏
  • 举报
回复
怎么可能是5呢?
得到5你就要:
int *find2=find(a,a+8,5); 

这样返回的才是5的地址
前面都是4的地址的返回,得到4才正常~!
就呆在云上 2008-11-26
  • 打赏
  • 举报
回复
find返回的是查到的对象的指针
你找到的是4
那么4这个对象的指针的值不就是4啊?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧