You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:54:58