std::vector<std::string> 删除重复元素
时间: 2024-03-15 11:40:21 浏览: 25
要删除std::vector<std::string>中的重复元素,可以使用以下步骤:
1. 首先,将vector中的元素排序,以便相同的元素相邻。
2. 然后,使用std::unique函数将重复的元素移到vector的末尾,并返回指向新的逻辑结尾的迭代器。
3. 最后,使用vector的erase函数将重复的元素从vector中删除。
下面是示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::string> vec = {"apple", "banana", "apple", "orange", "banana"};
// 步骤1:排序
std::sort(vec.begin(), vec.end());
// 步骤2:移除重复元素
auto it = std::unique(vec.begin(), vec.end());
// 步骤3:删除重复元素
vec.erase(it, vec.end());
// 输出结果
for (const auto& str : vec) {
std::cout << str << " ";
}
return 0;
}
```
输出结果为:
```
apple banana orange
```
相关问题
std::cout能直接输出vector<std::string>吗
std::cout是C++标准库中的输出流对象,它可以用于输出各种类型的数据。然而,对于vector<std::string>类型的数据,std::cout不能直接输出整个容器。你需要使用循环遍历vector,并逐个输出其中的每个元素。
下面是一个示例代码,展示了如何使用std::cout输出vector<std::string>中的每个元素:
```cpp
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::string> vec = {"Hello", "C++", "World"};
for (const auto& str : vec) {
std::cout << str << " ";
}
return 0;
}
```
上述代码中,我们使用了范围-based for循环来遍历vector中的每个元素,并使用std::cout输出每个元素。输出结果为:"Hello C++ World"。
std::vector<std::string>
std::vector<std::string>是C++标准库中的一个容器类,用于存储一组字符串。它提供了动态数组的功能,可以根据需要自动调整大小。
使用std::vector<std::string>可以方便地进行字符串的添加、删除、查找等操作。以下是std::vector<std::string>的一些常用操作:
1. 添加元素:可以使用push_back()函数将一个字符串添加到std::vector<std::string>的末尾。
2. 删除元素:可以使用erase()函数删除指定位置的字符串,或者使用pop_back()函数删除末尾的字符串。
3. 访问元素:可以使用下标运算符[]来访问指定位置的字符串,也可以使用at()函数来进行访问,at()函数会进行边界检查。
4. 获取大小:可以使用size()函数获取std::vector<std::string>中元素的个数。
5. 清空容器:可以使用clear()函数清空std::vector<std::string>中的所有元素。
6. 遍历容器:可以使用迭代器来遍历std::vector<std::string>中的所有元素。