帮助std :: find

0 c++ stl

我到底要取代什么用于获取迭代器(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)

提前致谢 !

Dar*_*rio 5

第三个参数就是您要查找的值.

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.