打印出std :: map

时间:2014-09-17 20:41:54

标签: c++ containers std

我正在尝试从地图中打印出键及其值。 我不知道缺少什么,因为我没有在控制台中获得任何输出 - 因此,某些事情必定是错误的。

#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; 
}

3 个答案:

答案 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变量。很难看出你想要做什么。为什么需要refm?如果您只是移除refm变量并使用object中的for()外观,那么它将起作用

答案 2 :(得分:0)

除了其他人给出的答案外,还值得考虑使用for-range循环:

for (const auto &emp : object)
{
    cout << "Key " << emp.first << " Key value: " << emp.second << endl;
}