std::vetcor 判断两个元素相等
时间: 2024-01-22 18:02:42 浏览: 24
std::vector没有直接判断两个元素相等的函数,但可以使用std::equal函数来判断两个vector是否相等。
示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = {1, 2, 3};
std::vector<int> v3 = {1, 2, 4};
bool isEqual1 = std::equal(v1.begin(), v1.end(), v2.begin());
bool isEqual2 = std::equal(v1.begin(), v1.end(), v3.begin());
std::cout << std::boolalpha << isEqual1 << std::endl; //true
std::cout << std::boolalpha << isEqual2 << std::endl; //false
return 0;
}
```
在上面的示例代码中,我们使用std::equal函数分别判断了v1和v2、v1和v3是否相等。其中,std::boolalpha是一个输出流格式标记,将bool类型的值以true或false形式输出。
相关问题
判断两个std::string相等
要判断两个std::string对象是否相等,可以使用比较运算符"=="。下面是一个示例代码:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = "Hello";
if (str1 == str2) {
std::cout << "str1和str2相等" << std::endl;
} else {
std::cout << "str1和str2不相等" << std::endl;
}
return 0;
}
```
在这个示例中,我们使用"=="运算符比较了str1和str2的值是否相等。如果相等,则输出"str1和str2相等";否则,输出"str1和str2不相等"。
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
```