帮助std :: find

时间:2009-06-11 20:02:08

标签: 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;
}

提前致谢!

3 个答案:

答案 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/

第三个参数基本上是你“比较”的值。