C :通过地图进行迭代
C++: Iterate Through Map
我正在尝试通过地图迭代以读取字符串,然后读取矢量中的所有数字到文件。我复制并粘贴了Typedef系列,然后将其调整为我的代码,因此我不正确。无论如何,Visual Studio在循环中使用Iterator_variable的使用给了我错误。它说不允许使用类型名称。我该如何解决?
ofstream output("output.txt");
typedef map<string, vector<int>>::iterator iterator_variable;
for (iterator_variable iterator = misspelled_words.begin(); iterator != misspelled_words.end(); iterator++)
{
output << iterator_variable->first;
for (int i = 0; i < misspelled_words.size(); i++)
{
output << " " << iterator_variable->second[i];
}
output << endl;
}
您应该访问迭代器,例如 iterator->first
而不是 iterator_variable->first
。
对于内部循环,您可能要通过0到iterator->second.size()
而不是misspelled_words.size()
。
ofstream output("output.txt");
typedef map<string, vector<int>>::iterator iterator_variable;
for (iterator_variable iterator = misspelled_words.begin(); iterator != misspelled_words.end(); iterator++)
{
output << iterator->first;
for (int i = 0; i < iterator->second.size(); i++)
{
output << " " << iterator->second[i];
}
output << endl;
}
您也可以将基于循环的新范围和自动使用用于更简洁且可读的代码。
ofstream output("output.txt");
for ( auto const & ref: misspelled_words ) {
output << ref.first;
for (auto const & ref2 : ref.second ) {
output << " " << ref2;
}
output << "n"; // endl force a stream flush and slow down things.
}
相关文章:
- C++以迭代方式搜索混合类型地图
- 如何使用迭代器初始化地图的键字段?
- 通过迭代器打印出地图的值
- 迭代C 地图键
- C++同一地图上的嵌套迭代器?
- 为什么当我尝试在地图中迭代时我的值不显示
- C 通过指针的地图进行迭代
- 减去地图迭代器
- 如何在地图迭代器中检测最后一个元素
- 通过地图和打印内容迭代时,倒出输出
- 为什么我的地图迭代器中存在语法错误
- 迭代地图和擦除元素
- 通过C 地图周期性迭代,程序崩溃
- 默认构造的地图迭代器以增量进入无限环路 - 绿色山丘编译器
- C STL,我想知道地图中的双向迭代器和操作员[]之间有什么不同
- 我可以使用基于范围的 for 循环轻松迭代地图的值吗?
- 在迭代地图时向/从地图添加/删除元素是否安全
- 在地图中迭代地图
- 我在迭代地图并更改其中的值时遇到问题
- 迭代地图和删除项目的最佳模式是什么?