首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

stl中find的使用?解决思路

2014-01-21 
stl中find的使用?#include iostream#include vector#include algorithmusing namespace stdint mai

stl中find的使用?

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cout<<"请输入array的长度:";
cin>>n;
vector<int> array(n);
cout<<"请输入array的信息:";
for(int i=0;i<n;i++)
cin>>array[i];
int findNum;
cin>>findNum;
int result=array.find(array.begin,array.end,findNum);
return 0;
}


这样是错的?怎么改啊???
[解决办法]
int result=array.find(array.begin(),array.end(),findNum); 
[解决办法]

int result=array.find(array.begin(),array.end(),findNum);

[解决办法]
int n;
cout<<"请输入array的长度:";
cin>>n;
vector<int> array(n);
cout<<"请输入array的信息:";
for(int i=0;i<n;i++)
cin>>array[i];
int findNum;
cin>>findNum;
vector<int>::iterator result = find(array.begin(), array.end(), findNum);
return 0;

[解决办法]
引用:
int n;
cout<<"请输入array的长度:";
cin>>n;
vector<int> array(n);
cout<<"请输入array的信息:";
for(int i=0;i<n;i++)
cin>>array[i];
int findNum;
cin>>findNum;
vector<int>::iterator result = find(array.begin(), array.end(), findNum);
return 0;

使用自己不清楚的函数时现在MSDN上查一下,参数和返回值的意义
[解决办法]
引用:
int result=array.find(array.begin(),array.end(),findNum); 


引用:

int result=array.find(array.begin(),array.end(),findNum);


看一下msdn的对find 的描述:
template<class InputIterator, class Type>
   InputIterator find(
      InputIterator _First, 
      InputIterator _Last, 
      const Type& _Val
   );

Return Value
An input iterator addressing the first occurrence of the specified value in the range being searched. If no such value exists in the range, the iterator returned addresses the last position of the range, one past the final element.

 

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

int result=array.find(array.begin(),array.end[color=#FF0000]()
 
我需要得到是否有那个数就好,现在没时间研究这个撒。。。

返回值也是个迭代器
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

int result=array.find(array.begin(),array.end[color=#FF0000]()
 
我需要得到是否有那个数就好,现在没时间研究这个撒。。。

返回值也是个迭代器
我就是想要返回它在哪一个嘛。。。。

int n;
cout<<"请输入array的长度:";
cin>>n;
vector<int> array(n);
cout<<"请输入array的信息:";
for(int i=0;i<n;i++)
cin>>array[i];
int findNum;
cin>>findNum;
vector<int>::iterator result = find(array.begin(), array.end(), findNum);
cout<<"the find data is:"<<*result<<endl;
return 0;

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

int result=array.find(array.begin

(),array.end(),findNum); 




[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

int result=array.find(array.begin(),array.end[color=#FF0000]()
 
我需要得到是否有那个数就好,现在没时间研究这个撒。。。

返回值也是个迭代器
我就是想要返回它在哪一个嘛。。。。

int n;
cout<<"请输入array的长度:";
cin>>n;
vector<int> array(n);
cout<<"请输入array的信息:";
for(int i=0;i<n;i++)
cin>>array[i];
int findNum;
cin>>findNum;
vector<int>::iterator result = find(array.begin(), array.end(), findNum);
cout<<"the find data is:"<<*result<<endl;
return 0;
+1
[解决办法]
cout<<"the find data is:"<<(int)*result<<endl;转换一下
[解决办法]
好像不行。。还是有错。VC上跑不出来!!!!!!
[解决办法]
引用:
好像不行。。还是有错。VC上跑不出来!!!!!!

我在vs2005上跑的
[解决办法]
#include <iostream> 
#include <vector> 
#include <algorithm> 
using namespace std; 
int main() 

int n;     
cout << "请输入array的长度:";     
cin >> n;     
vector<int> array(n);    
cout << "请输入array的信息:";     
for (int i = 0; i<n;i++)         
cin>>array[i];     
int findNum;     
cin >> findNum;     
int result = *find(array.begin(), array.end(), findNum);     
return 0; 
}

find是通用算法,不是成员函数,用*解引用得到值
[解决办法]
引用:
#include <iostream> 
#include <vector> 
#include <algorithm> 
using namespace std; 
int main() 

int n;     
cout << "请输入array的长度:";     
cin >> n;     
vector<int> array(n);    
cout << "请输入array的信息:";     
for (int i = 0; i<n;i++)         
cin>>array[i];     
int findNum;     
cin >> findNum;     
int result = *find(array.begin(), array.end(), findNum);     
return 0; 
}

find是通用算法,不是成员函数,用*解引用得到值

好像还不行,如果找不到返回的是个负数。。。。。
[解决办法]
引用:
Quote: 引用:

#include <iostream> 
#include <vector> 
#include <algorithm> 
using namespace std; 
int main() 

int n;     
cout << "请输入array的长度:";     
cin >> n;     
vector<int> array(n);    
cout << "请输入array的信息:";     
for (int i = 0; i<n;i++)         


cin>>array[i];     
int findNum;     
cin >> findNum;     
int result = *find(array.begin(), array.end(), findNum);     
return 0; 
}


find是通用算法,不是成员函数,用*解引用得到值

好像还不行,如果找不到返回的是个负数。。。。。

vector<int>::iterator result = find(array.begin(), array.end(), findNum);     
if (array.end() != result)
{
cout<<*result<<endl;
}

find是个函数,你们也代码不用判断函数返回值吗?
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

int result=array.find(array.begin(),array.end(),findNum); 


引用:

int result=array.find(array.begin(),array.end(),findNum);


看一下msdn的对find 的描述:
template<class InputIterator, class Type>
   InputIterator find(
      InputIterator _First, 
      InputIterator _Last, 
      const Type& _Val
   );

Return Value
An input iterator addressing the first occurrence of the specified value in the range being searched. If no such value exists in the range, the iterator returned addresses the last position of the range, one past the final element.

 
我需要得到是否有那个数就好,现在没时间研究这个撒。。。


当老板可以这么说,当的是苦命的码农那就挤时间去研究这个。
[解决办法]
问题解决了就结贴吧
[解决办法]
find 返回值一定要判断的,没有找到对应的元素,直接返回无效的迭代器,如果你对无效的迭代器解引用会宕机;这是编程的好习惯;

热点排行