我正在尝试从地图中打印出键及其值。 我不知道缺少什么,因为我没有在控制台中获得任何输出 - 因此,某些事情必定是错误的。
#include <iostream>
#include <map>
using namespace std;
typedef map<string, int> employees;
int main(void)
{
employees object;
employees ref;
employees &m = ref;
employees::const_iterator it;
object["GREG"] = 1000;
object["ROBERT"] = 2000;
for(it = m.begin(); it != m.end(); ++it)
{
cout << "Key" << it->first << "Key value: " << it->second << endl;
}
}
我想我可能搞砸了称为员工的MAP的引用,或许我应该尝试这个解决方案(不知何故也不起作用......但是,也许它不那么'愚蠢的方法'):
for(it = employees.begin(), it != employees.end(), ++it)
{
employees::const_iterator it;
}
答案 0 :(得分:3)
您正在迭代的地图不包含任何元素。 你的循环是:
for(it = m.begin(); it != m.end(); ++it)
但您填写的唯一地图是
object["GREG"] = 1000;
object["ROBERT"] = 2000;
我不知道为什么你需要带参考的体操,但是这段代码会在你的代码中打印出这些对象:
#include <iostream>
#include <map>
using namespace std;
typedef map<string, int> employees;
int main(void)
{
employees object;
employees::const_iterator it;
object["GREG"] = 1000;
object["ROBERT"] = 2000;
for(it = object.begin(); it != object.end(); ++it)
{
cout << "Key " << it->first << " Key value: " << it->second << endl;
}
}
答案 1 :(得分:0)
您正在将员工添加到object
变量,但是会转出ref
变量。很难看出你想要做什么。为什么需要ref
和m
?如果您只是移除ref
和m
变量并使用object
中的for()
外观,那么它将起作用
答案 2 :(得分:0)
除了其他人给出的答案外,还值得考虑使用for-range循环:
for (const auto &emp : object)
{
cout << "Key " << emp.first << " Key value: " << emp.second << endl;
}