如何通过按键从地图中获取价值?我有一个整数A
的向量,我有一张地图。我想打印M[1]
,但我不明白我该怎么做,因为我有一个错误:
error: invalid operands to binary expression ('ostream' (aka 'basic_ostream<char>') and 'mapped_type' (aka 'std::__1::pair<int, int>'))
cout << M[1];
~~~~ ^ ~~~~
我的代码:
int main() {
vector<int> A;
map<int, pair<int,int> > M;
FOR(i,1,maxN) {
pair<int,int> p;
p.first = 1;
p.second = 2;
M[i] = p;
}
FOR(i,0,t) {
int x = A[i];
cout << M[x] << endl;
}
return 0;
}
答案 0 :(得分:4)
地图的值类型是std :: pair。您需要单独打印对中的2个值:
cout<< M[x].first << "," << M[x].second << endl;
答案 1 :(得分:2)
您可以创建一个ostream函数来打印任何一对,而不是打印该对中的值。
像这样:
#include <iostream>
#include <utility>
template<class T, class U>
std::ostream& operator<<(std::ostream &os, const std::pair<T, U> &p) {
os << '{' << p.first << ',' << p.second << '}';
return os;
}
int main() {
std::pair<int, int> p(7, 11);
std::pair<std::string, double> q("My Double", 37.02);
std::cout << p << std::endl;
std::cout << q << std::endl;
return 0;
}