我必须将 ??? 替换为将迭代器( it )替换为某个元素(例如Base(2)
)?
我尝试了一些镜头,但没有,编译器只是说这是错误的。
这是代码
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
Base(int a) {ina = a;}
~Base() {}
int Display() {return ina;}
int ina;
};
int main(int argc, char *argv[])
{
vector<Base> myvector;
for(int i=0 ; i<10 ; i++)
{
myvector.push_back(Base(i));
}
vector<Base>::iterator it;
it = find(myvector.begin(), myvector.end(), ??? );
system("PAUSE");
return EXIT_SUCCESS;
}
提前致谢!
答案 0 :(得分:5)
第三个参数就是您要查找的值。
it = find(myvector.begin(), myvector.end(), Base(2));
现在的问题是编译器需要知道两个元素是否相等。因此,您必须实现运算符以进行相等性检查(在main
和您的类定义之间编写此代码):
// a equals b if a.ina equals b.ina
bool operator == (const Base& a, const Base& b) {
return a.ina == b.ina;
}
如果你只想获得myvector
的第n个元素,你也可以写myvector.begin() + n
。
答案 1 :(得分:2)
你可以执行myvector.begin()+ n来获取myvector的第n个元素的迭代器。
答案 2 :(得分:0)
http://www.cplusplus.com/reference/algorithm/find/
第三个参数基本上是你“比较”的值。