c++11 std::vector 查找特定值算法
时间: 2023-07-01 09:07:59 浏览: 67
你可以使用`std::find`算法在`std::vector`中查找特定值。具体方法如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
// 查找 3 是否在 vec 中
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
std::cout << "3 在 vec 中,位置为:" << it - vec.begin() << std::endl;
} else {
std::cout << "3 不在 vec 中" << std::endl;
}
return 0;
}
```
输出结果为:`3 在 vec 中,位置为:2`。
如果要查找的是一个自定义类型的对象,比如一个名为`Person`的类,你需要重载该类的`operator==`运算符,以便让`std::find`能够正确比较对象是否相等。例如:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
class Person {
public:
Person(const std::string& name, int age) : name_(name), age_(age) {}
bool operator==(const Person& other) const {
return name_ == other.name_ && age_ == other.age_;
}
private:
std::string name_;
int age_;
};
int main() {
std::vector<Person> vec{{"Alice", 20}, {"Bob", 30}, {"Charlie", 40}};
// 查找名为 Bob,年龄为 30 的 Person 是否在 vec 中
auto it = std::find(vec.begin(), vec.end(), Person{"Bob", 30});
if (it != vec.end()) {
std::cout << "Bob 在 vec 中,位置为:" << it - vec.begin() << std::endl;
} else {
std::cout << "Bob 不在 vec 中" << std::endl;
}
return 0;
}
```
输出结果为:`Bob 在 vec 中,位置为:1`。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)