

在B站黑马程序员的C++视频中,P279 分P 查看记录功能这个功能的实现时,up主使用了双中括号类似于二维数组的索引方式来访问了map容器(也就是图中的m_Record<int,vector>),请问map的键值对不是只能用key来访问value吗,为什么可以这样访问?


在B站黑马程序员的C++视频中,P279 分P 查看记录功能这个功能的实现时,up主使用了双中括号类似于二维数组的索引方式来访问了map容器(也就是图中的m_Record<int,vector>),请问map的键值对不是只能用key来访问value吗,为什么可以这样访问?
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言答:在C++ STL中,map是使用红黑树实现的关联容器,其中的键值对是按照键的大小自动排序存储的。但是,在map中,每个键对应的值并不是一个简单的数据类型,而是一个如vector、list、map等容器类型的对象,这个对象本身就可以像数组一样通过下标访问其中的元素。因此,可以使用双中括号类似于二维数组的索引方式来访问map容器中的vector对象,即在第一个中括号中输入键值,第二个中括号中输入下标即可访问相应元素。 例如,以下代码演示了如何使用双中括号访问vector类型的键值对:
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
map<int, vector<int>> myMap = {{1, {10, 20, 30}}, {2, {40, 50, 60}}};
cout << myMap[1][0] << endl; // 输出 10
cout << myMap[2][2] << endl; // 输出 60
return 0;
}