📅  最后修改于: 2023-12-03 15:13:56.980000             🧑  作者: Mango
在 C++ STL(Standard Template Library)中,向量映射是一种非常有用的容器类型,它允许存储任意类型的值,并且可以通过下标的方式快速访问元素。
本文将介绍向量映射的基本概念及其使用方法,并给出一些示例代码。
向量映射通常也被称为“映射”,是一种将键和值进行映射的容器类型。其中,键指代一个唯一的标识符,而值则是与该键相关联的数据。
在 C++ STL 中,可以使用 std::map
类模板来实现向量映射。该模板定义在头文件 <map>
中。
#include <map>
std::map<int, std::string> myMap;
上面的代码定义了一个键类型为 int
,值类型为 std::string
的向量映射。我们可以使用以下方式向映射中添加元素:
myMap[1] = "One";
myMap[2] = "Two";
myMap[3] = "Three";
其中,myMap[1] = "One"
等价于 myMap.insert(std::make_pair(1, "One"))
,也就是将键为 1,值为 "One" 的键值对添加到映射中。
我们可以使用以下方式遍历映射中的元素:
for (auto& kv : myMap) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
其中,auto& kv
表示遍历到的键值对,kv.first
表示键,kv.second
表示值。
下面给出一些向量映射的示例代码,供大家参考。
#include <iostream>
#include <string>
#include <map>
char findMostFrequentChar(const std::string& str) {
std::map<char, int> charCount;
for (char c : str) {
charCount[c]++;
}
char mostFreqChar = '\0';
int maxCount = 0;
for (auto& kv : charCount) {
if (kv.second > maxCount) {
mostFreqChar = kv.first;
maxCount = kv.second;
}
}
return mostFreqChar;
}
int main() {
std::string str = "hello world";
char mostFreqChar = findMostFrequentChar(str);
std::cout << "The most frequent char is: " << mostFreqChar << std::endl;
return 0;
}
上面的代码使用了一个向量映射 charCount
,用于统计字符串中每个字符出现的次数。遍历完字符串后,再遍历一遍映射,找出出现次数最多的字符即可。
#include <iostream>
#include <vector>
#include <map>
std::vector<int> intersect(const std::vector<int>& nums1, const std::vector<int>& nums2) {
std::map<int, int> numCount;
std::vector<int> result;
for (int num : nums1) {
numCount[num]++;
}
for (int num : nums2) {
if (numCount[num]) {
result.push_back(num);
numCount[num]--;
}
}
return result;
}
int main() {
std::vector<int> nums1 = {1, 2, 2, 1};
std::vector<int> nums2 = {2, 2};
std::vector<int> result = intersect(nums1, nums2);
std::cout << "The intersection is: ";
for (int num : result) {
std::cout << num << ", ";
}
std::cout << std::endl;
return 0;
}
上面的代码使用了两个向量映射 numCount
和 result
,其中,numCount
记录了第一个数组中每个元素出现的次数,result
用于存储交集。遍历第二个数组时,如果当前元素在第一个数组中出现过,则将其加入交集中,并将该元素在第一个数组中出现过的次数减去 1。
本文介绍了 C++ STL 中的向量映射,并给出了一些示例代码。向量映射是一种非常有用的容器类型,在编写复杂 C++ 程序时经常会用到。