gpt4 book ai didi

c++ - 通过迭代打印 C++ Map

转载 作者:行者123 更新时间:2023-11-30 01:58:25 25 4
gpt4 key购买 nike

有没有更简单的方法来解决这个问题,或者我做错了什么?我认为我的问题的核心在于代码,

vector<int> &v = miss_words[*i];

但也许我只是把整个概念弄错了。有什么建议吗?

代码:

void print_map(map<string, vector<int> > miss_words)    // Prints out dictionary set
{
map<string, vector<int> >::iterator it = miss_words.begin(); // Creates an iterator
while(it != miss_words.end()) // While hasn't reached the end
{
vector<int> &v = miss_words[*it]; // Accesses Vector in map
for(unsigned int g = 0; g <= v.size(); g++)
{
cout<<v.at(g)<<": ";
cout<<v.at(g)<<" "<<endl; // Print out data at i
}
it++; // Increment iterator
}
}

编译器说“在 miss_words 中没有匹配 'operator[]'。

最佳答案

你想说vector<int> &v = it->second;

迭代器的值类型是映射的值类型,即pair<string, vector<int>> .


事实上,在现代 C++ 中,您可以将其编写得更简单,并且不易出错,如下所示:

for (auto const & p : miss_words)
{
for (auto const & x : p.second)
{
cout << x << ": " << x << " \n";
}
}

那样的话,您甚至不需要担心 vector 的大小。

关于c++ - 通过迭代打印 C++ Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com