C++将std::vector<unsigned int>vCapData以值和重复次数存为map,
时间: 2024-02-25 21:52:12 浏览: 65
预定义的>>和<<操作符-C++输入输出流
好的,以下是使用 C++ 将 `std::vector<unsigned int> vCapData` 以值和重复次数存为 map 的方法:
```c++
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
vector<unsigned int> vCapData = {1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5}; // 假设这是我们的输入数据
int n = vCapData.size();
map<unsigned int, int> mp;
for(int i=0; i<n; i++) {
if(mp.find(vCapData[i]) == mp.end()) { // 如果 map 中不存在该元素,则插入该元素并将重复次数设为 1
mp.insert({vCapData[i], 1});
}
else { // 如果 map 中已存在该元素,则将重复次数加 1
mp[vCapData[i]]++;
}
}
for(auto it=mp.begin(); it!=mp.end(); it++) { // 遍历 map 并输出每个元素的值和重复次数
cout << it->first << " appears " << it->second << " times" << endl;
}
return 0;
}
```
在上述代码中,我们首先定义了一个 `std::vector<unsigned int>` 类型的变量 `vCapData`,用于存储输入数据。接着我们使用 `map<unsigned int, int>` 定义了一个名为 `mp` 的 map,用于存储 `vCapData` 中每个元素的值和重复次数。然后我们使用一个 for 循环遍历 `vCapData` 中的每个元素,如果该元素不存在于 map 中,则插入该元素并将重复次数设为 1;如果该元素已经存在于 map 中,则将重复次数加 1。最后我们再次使用一个 for 循环遍历 map 并输出每个元素的值和重复次数。
希望这个代码能够解决你的问题!
阅读全文