如何访问映射中从字符串到向量的向量中的索引

How to access an index in a vector in a map from strings to vectors

本文关键字:向量 字符串 索引 映射 何访问 访问      更新时间:2023-10-16

如果我有以下代码,它将 3 个向量存储为unordered_map中的值,并通过它们的第一个索引中的字符串作为键映射到它们:

unordered_map<string, vector <vector<string>>> my_map;
vector<string> vec1 = {"banana", "apple"};
vector<string> vec2 = {"banana", "banana"};
vector<string> vec3 = {"banana", "pear"};
my_map["banana"].push_back(vec1);
my_map["banana"].push_back(vec2);
my_map["banana"].push_back(vec3);
cout << my_map["banana"][0] << my_map["banana"][1] << my_map["banana"][2];

如何访问unordered_map向量的特定索引?我试图在最后一行执行此操作,但它不起作用。我也尝试使用 .at(0) 等代替双括号,但这也不起作用。

my_map["banana"][0]是一个std::vector<std::string>,所以你不能直接输出它。您可以重载 << 运算符,或者只指定另一个索引。


你有一个std::unordered_map<std::string, std::vector<std::vector<std::string>>>,其中每个键都有一个向量向量。

因此my_map["banana"].push_back(vec1) vec1推到主向量。如果要从 vec1 访问值,则必须指定 2 个索引,因为:

my_map["banana"][0]                     [0]
        ^^^^^^   ^                       ^
         key     vector 0               element 0 in the vector
                 (in main vector)       at position 0 in the main vector

注意:这将返回"banana"


如果你想得到"pear",你会使用:
my_map["banana"]    [2]                  [1]
       ^^^^^^^       ^                    ^  
         key         third vector         second element
                      (vec3)                ("pear")