判断两个vector是否相等
时间: 2023-05-22 15:06:50 浏览: 501
判断两个vector是否相等可以使用vector的==运算符进行比较,如果两个vector中的所有元素都相等且元素个数相同,则这两个vector相等。具体实现可以参考以下代码:
```c++
bool isEqual(vector<int> vec1, vector<int> vec2) {
if (vec1.size() != vec2.size()) {
return false;
}
return vec1 == vec2;
}
```
使用方式:
```c++
vector<int> vec1 {1, 2, 3};
vector<int> vec2 {1, 2, 3};
vector<int> vec3 {1, 2, 4};
bool res1 = isEqual(vec1, vec2); // true
bool res2 = isEqual(vec1, vec3); // false
```
注意:上述代码只适用于int类型的vector,如果vector中的元素是复杂对象,则需要自定义==运算符进行比较。
相关问题
std::vector 判断两个元素相等 并删除其中一个元素
可以使用 std::remove_if 算法结合 lambda 表达式来实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 2, 4, 5, 2};
vec.erase(std::remove_if(vec.begin(), vec.end(), [&](int x) {
return x == 2 && std::count(vec.begin(), vec.end(), 2) > 1;
}), vec.end());
for (auto x : vec) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
以上代码中,lambda 表达式中的 x == 2 && std::count(vec.begin(), vec.end(), 2) > 1 表示只有当 x 的值为 2,且在整个 vector 中 2 的个数大于 1 时才返回 true,也就是只删除其中一个 2。
执行结果:
```
1 3 2 4 5
```
std::vector 判断两个元素相等 并删除其中一个元素 迭代器方法
可以利用 std::remove_if 和 lambda 表达式来实现。
假设我们要删除所有值为 value 的元素,代码如下:
```cpp
std::vector<int> vec = {1, 2, 3, 2, 4, 5, 2};
int value = 2;
vec.erase(std::remove_if(vec.begin(), vec.end(), [value](int x){ return x == value; }), vec.end());
```
在 lambda 表达式中,我们定义了一个匿名函数,它接受一个整数参数 x,如果 x 等于 value,则返回 true,表示需要删除该元素,否则返回 false,表示保留该元素。
std::remove_if 的返回值是一个迭代器,指向被删除元素的下一个元素,我们将其作为 vec.erase 的第一个参数,表示从这个位置开始删除到末尾。
因此,以上代码的执行结果是:
```cpp
{1, 3, 4, 5}
```
这个方法可以用于任意类型的元素,只需要在 lambda 表达式中修改判断条件即可。
阅读全文