《C++ Primer》练习:make_pair触发error C2665错误求排查
代码错误分析与修正
你的代码核心问题是变量类型不匹配:
- 你将用来存储整数的变量
i声明成了string类型,导致make_pair(word, i)生成的是pair<string, string>类型对象 - 但你定义的
vector要存储的是pair<string, int>类型,两种类型无法隐式转换,因此触发编译错误
修正后的代码如下:
#include <vector> #include <utility> #include <string> #include <iostream> using namespace std; int main() { vector<pair<string, int>> v; string word; int i; // 将类型从string修改为int while (cin >> word >> i) v.push_back(make_pair(word, i)); return 0; }
你也可以用更简洁的方式构造pair对象:
// C++11及以上支持列表初始化 v.push_back({word, i}); // 或者直接在vector内部构造pair,效率更高 v.emplace_back(word, i);
内容的提问来源于stack exchange,提问作者gaofeng
相关产品推荐
相关产品推荐

