【发布时间】:2014-06-14 17:52:08
【问题描述】:
我有一张地图:map<string, Operations> 其中 Operations 是一个枚举
enum class Operations
{
div,
mul,
add,
sub
};
我是这样填写地图的:
myMap.insert( make_pair("add", Operations::add) );
myMap.insert( make_pair("sub", Operations::sub) );
myMap.insert( make_pair("div", Operations::div) );
myMap.insert( make_pair("mul", Operations::mul) );
如何正确遍历此地图?特别是要获得第二个元素?,(值)。 我收到编译错误。
代码如下:
#include <iostream>
#include <map>
using namespace std;
enum class Operations
{
add,
sub,
div,
mul
};
template <class K, class V>
void displayMap ( map<K,V> &m )
{
typename map<K,V>::iterator inx = m.begin();
for ( ;inx != m.end(); ++inx )
{
cout << inx-> first << " " << inx->second << endl;
}
}
int main ( )
{
static map<string, Operations> myMap;
myMap.insert( make_pair ("add", Operations::add) );
myMap.insert( make_pair ("sub", Operations::sub) );
myMap.insert( make_pair ("div", Operations::div) );
myMap.insert( make_pair ("mul", Operations::mul) );
displayMap (myMap);
return 0;
}
这是错误信息:
error: invalid operands to binary expression ('basic_ostream<char,
std::__1::char_traits<char> >' and 'Operations')
cout << inx-> first << " " << inx->second << endl;
提前致谢! 狮子座
【问题讨论】:
-
请显示您的编译器和编译命令
-
当您将
Operations值插入cout时,您希望打印什么? -
i686-apple-darwin11-llvm-g++-4.2 (GCC) clang++ -std=c++11 -stdlib=libc++ -g -o fillMapEnum -Wall -Wextra fillMapEnum.cpp
-
myMap没有理由成为static。 -
这个问题与地图或迭代无关。先解决打印枚举的问题。