vector中find函数的使用

2015年12月28日 原创
关键词: C++ stl
摘要 如何在vector中查找某个元素,并转换成该类的指针。

在c++中vector提供了和数组一样方便的链表操作,当我们需要查找vector里的某个元素时,可以用find函数来查找。find函数的定义如下:。find函数的参数需要3个值,分别是开始的位置,结束的位置和要查找的值,返回的是一个iterator对象。如果需要查找的不是内置对象则需要重载==操作符。下面的代码演示了find函数的使用。

class Point{
public:
    int x, y;
    Point(int x = 0, int y = 0) :x(x), y(y){}
    const bool operator ==(const Point& p) {
        return p.x == x&&p.y == y;
    }
};

int main() {
    vector<Point> ps;
    for (int i = 0; i < 100; i++) {
        ps.push_back(Point(rand() * 100, rand() * 100));
    }
    vector<Point>::iterator it = find(ps.begin(), ps.end(), Point(rand() * 100, rand() * 100));
    if (it != ps.end()) {
        //找到了
        
    }
    else {
        //没找到
    }
    return 0;
}

如果vector里存放的是指针,而我们需要把找到的元素转换为指针则可以这样做:

Point* destP = &(*it);