//example2.cpp map<string, size_t> m_map; vector<string> vec = {"aaa", "bbb", "ccc", "aaa"}; set<string> m_set; for (auto &item : vec) { m_set.insert(item); cout << item << endl; // aaa bbb ccc aaa if (m_map.find(item) != m_map.end()) { m_map[item]++; } else { m_map[item] = 1; } } for (auto &item : m_map) { // aaa 1 bbb 1 ccc 1 cout << item.first << " " << item.second << endl; } //遍历set for (auto &item : m_set) { cout << item << endl; // aaa bbb ccc }
时间: 2024-04-18 17:32:21 浏览: 21
这段代码演示了如何使用容器和算法来操作和统计字符串的出现次数。
首先,我们创建了一个空的字符串到大小的映射m_map和一个空的字符串集合m_set。然后,我们创建了一个字符串向量vec,并初始化为{"aaa", "bbb", "ccc", "aaa"}。
在for循环中,我们遍历vec中的每个元素。首先,我们将当前元素插入到m_set中,并输出当前元素的值。然后,我们使用m_map的find函数来查找当前元素是否已经存在于m_map中。如果存在,我们将该元素的值加1;否则,我们将该元素作为键插入到m_map中,并将值设置为1。
接下来,我们再次使用一个for循环遍历m_map,并输出每个键和对应的值。最后,我们使用一个for循环遍历m_set,并输出其中的每个元素。
最终的输出结果为:
aaa
bbb
ccc
aaa
aaa 2
bbb 1
ccc 1
aaa
bbb
ccc
相关问题
vector<uint8_t>怎么转换成vector<int32_t>
可以使用std::transform函数将vector<uint8_t>转换成vector<int32_t>,示例代码如下:
vector<uint8_t> vec1 = {1, 2, 3, 4};
vector<int32_t> vec2(vec1.size());
std::transform(vec1.begin(), vec1.end(), vec2.begin(), [](uint8_t val) {
return static_cast<int32_t>(val);
});
这里使用了lambda表达式将uint8_t类型的值转换成int32_t类型的值。
uint8数组转换成std::vector<uint8_t>
将uint8数组转换为std::vector<uint8_t>可以通过以下步骤实现:
1. 创建一个空的std::vector<uint8_t>对象。
2. 使用数组的起始地址和长度,将数组的元素逐个添加到std::vector<uint8_t>中。
下面是一个示例代码:
```cpp
#include <vector>
std::vector<uint8_t> arrayToVector(const uint8_t* array, size_t length) {
std::vector<uint8_t> vec;
vec.reserve(length); // 预分配足够的空间以避免不必要的重新分配
for (size_t i = 0; i < length; ++i) {
vec.push_back(array[i]);
}
return vec;
}
```
使用示例:
```cpp
uint8_t array[] = {1, 2, 3, 4, 5};
size_t length = sizeof(array) / sizeof(array[0]);
std::vector<uint8_t> vec = arrayToVector(array, length);
```
这样,你就可以将uint8数组转换为std::vector<uint8_t>了。