【发布时间】:2021-02-04 04:22:44
【问题描述】:
我正在尝试在 C++ 中的无序映射中执行以下示例
my_dict = {'one': ['alpha','gamma'], 'two': ['beta'], 'three' : ['charlie']}
print(my_dict["one"]) // ['alpha','gamma']
我尝试使用find 运算符,如下所示
int main ()
{
std::unordered_map<std::string, std::vector<std::string>> dict;
dict["one"].push_back("alpha");
dict["one"].push_back("beta");
dict["two"].push_back("gamma");
auto it = dict.find("one");
cout<<it->second<<endl; // expected output alphabeta
return 0;
}
但我无法检索此键 dict["one"] 的值。我错过了什么吗?
非常感谢任何帮助。
谢谢
【问题讨论】:
-
it->second是一个std::vector对象,而std::vector对象不能直接打印到std::cout(它没有operator<<用于std::ostreams)。如果要打印矢量,则需要实际单独打印元素 -
@Human-Compiler 感谢您的回复。如何单独打印?你的意思是这样
for (auto i: it) std::cout << i << ' ';? -
@learner 如果你使用 rb-for,它应该是
for (auto i: it->second) std::cout << i << ' ';。这确实是打印矢量的正确方法。
标签: c++ unordered-map