我到底要取代什么?用于获取迭代器(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;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
第三个参数就是您要查找的值.
it = find(myvector.begin(), myvector.end(), Base(2));
Run Code Online (Sandbox Code Playgroud)
现在的问题是编译器需要知道两个元素是否相等.因此,您必须实现运算符以进行相等性检查(在main类定义和类定义之间编写此代码):
// a equals b if a.ina equals b.ina
bool operator == (const Base& a, const Base& b) {
return a.ina == b.ina;
}
Run Code Online (Sandbox Code Playgroud)
如果你只想获得第n个元素myvector,你也可以写myvector.begin() + n.