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

C++ vector.push_back报no matching function调用错误的原因是什么

报错原因
  • 核心类型不匹配:你声明的vector_类型是std::vector<ChainingTable<int>::Record>,是存储Record对象本身的容器,其push_back方法要求传入Record类型的实例。但你代码中new Record(key, value)的返回值是Record*指针类型,编译器找不到接收指针参数的push_back重载,因此抛出匹配失败错误。
  • 额外逻辑错误:代码中std::vector<Record> vector_ = records_[idx];是值拷贝操作,你对vector_做的所有修改(包括更新已有key对应的value、插入新记录)都只会作用在本地拷贝变量上,不会同步到类成员records_数组中,就算编译通过逻辑也不符合预期。
修复方案
  1. 将vector_改为引用类型,让修改直接作用在原成员数组上:
// 加&变成左值引用
std::vector<Record>& vector_ = records_[idx];
  1. 插入新记录时去掉new,直接构造Record对象即可,也可以用emplace_back减少一次拷贝提升性能:
// 写法1:直接传临时对象
vector_.push_back(Record(key, value));
// 写法2:更推荐的emplace_back,直接在容器内部构造对象
vector_.emplace_back(key, value);

内容的提问来源于stack exchange,提问作者daniel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:00