我需要打印包含multimap的dequeu,但它不起作用,我做错了什么?print multique包含multimap
int main()
{
deque<multimap<string,int> > q_map;
multimap<string,int> m;
m.insert(pair<string, int>("a", 1));
m.insert(pair<string, int>("c", 2));
m.insert(pair<string, int>("b", 3));
m.insert(pair<string, int>("b", 4));
m.insert(pair<string, int>("a", 5));
m.insert(pair<string, int>("b", 6));
cout << "Map size: " << m.size() << endl;
q_map.push_back(m);
for (std::deque<int>::iterator it = q_map.begin(); it!=q_map.end(); ++it)
std::cout << ' ' << *it;
}
我总是得到一个编译器错误:
error: conversion from ‘std::_Deque_iterator<std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >, std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >&, std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >*>’ to non-scalar type ‘std::_Deque_iterator<int, int&, int*>’ requested
q_map.cpp:23: error: no match for ‘operator!=’ in ‘it != std::deque<_Tp, _Alloc>::end() [with _Tp = std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >, _Alloc = std::allocator<std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > >]()’
我说我正在编译器错误。 – Merl 2015-03-02 14:22:27
'std :: deque :: iterator'?为什么'int'?如果您的C++ 11编译器考虑使用[基于范围的for for循环代替](http://en.cppreference.com/w/cpp/language/range-for),或者最少的'const auto it = q_map.begin()' –
2015-03-02 14:24:44
另外,当你修复上面的错误时,你会在你试图打印一个'std :: multimap'对象时得到新的错误。 – 2015-03-02 14:30:24