C++ 如何通过键从映射中获取值
如何通过键从地图中获取值?我有一个整数a的向量,还有一张地图。我想打印M[1],但我不明白如何打印,因为我有一个错误:C++ 如何通过键从映射中获取值,c++,c++11,C++,C++11,如何通过键从地图中获取值?我有一个整数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]; ~~~~ ^ ~~~~
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;
}
映射的值类型是std::pair。您需要单独打印该对中的2个值:
cout<< M[x].first << "," << M[x].second << endl;
映射的值类型是std::pair。您需要单独打印该对中的2个值:
cout<< M[x].first << "," << M[x].second << endl;
帕尼有一个很好的答案。我想我会发布我的,这是相同的想法,但略有不同 您可以创建一个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;
}
帕尼有一个很好的答案。我想我会发布我的,这是相同的想法,但略有不同 您可以创建一个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;
}
也许先尝试获取if,然后尝试打印,看看哪里出了问题。提示:这不是获取。看起来我不确定你对循环做了什么,但是请不要使用定义来让C++看起来像其他语言。你只会把自己和别人弄糊涂。写forint i=0真的那么难吗;i@ZanLynx这段代码是我在编程比赛中使用的。我在工作中不使用这些宏。也许先尝试获取if,然后尝试打印它,看看哪里出了问题。提示:这不是获取。看起来我不确定你对循环做了什么,但是请不要使用定义来让C++看起来像其他语言。你只会把自己和别人弄糊涂。写forint i=0真的那么难吗;i@ZanLynx这段代码是我在编程比赛中使用的。我在工作中不使用这些宏。