C++向量逐分量相加代码报错:std::_1vector无push成员
搞定向量逐分量相加的编译错误 & 实现方案
嘿,我来帮你拆解这个问题!首先你遇到的编译错误很直接——std::vector根本没有叫push的成员函数,标准库vector里添加元素要用push_back()(往尾部加元素)或者emplace_back()(直接在尾部构造元素),你应该是不小心把push_back()写成push()了,这才导致了报错。
先给你一个能跑的向量相加实现
要实现你想要的(2,1)+(3,3)=(5,4)效果,核心思路就是遍历两个向量的对应元素,把相加结果存入新向量里。这里要注意两个向量的长度得一致,不然对应分量没法匹配,下面是完整的可运行代码:
#include <iostream> #include <vector> #include <stdexcept> using namespace std; // 模板函数,支持不同类型的向量相加(int、float这些都能用) template<typename T> vector<T> addVectors(const vector<T>& vecA, const vector<T>& vecB) { // 先检查两个向量长度是否相同,不一致就抛异常提示 if (vecA.size() != vecB.size()) { throw invalid_argument("两个向量的长度必须一致才能逐分量相加!"); } vector<T> result; result.reserve(vecA.size()); // 提前分配内存,避免多次扩容,效率更高 // 遍历每个分量相加,存入结果向量 for (size_t i = 0; i < vecA.size(); ++i) { result.push_back(vecA[i] + vecB[i]); // 这里用正确的push_back! } return result; } int main() { // 初始化你要测试的两个向量 vector<int> vecA = {2, 1}; vector<int> vecB = {3, 3}; try { vector<int> result = addVectors(vecA, vecB); cout << "相加结果:(" << result[0] << ", " << result[1] << ")" << endl; } catch (const exception& e) { cerr << "出错啦:" << e.what() << endl; } return 0; }
再说说你代码片段里的其他小问题
从你贴的不完整代码来看,你引入了stack_base.h和自定义的Stack<T>类,但这个栈类和你现在做的向量相加完全不相关啊?如果不是项目里必须保留的话,建议先把这部分去掉,免得混淆。另外你的App类代码写了一半(App(Stack<T&...),这里模板参数的语法明显有问题,应该是Stack<T>而不是Stack<T&...,如果这部分是其他功能的代码,记得修正语法哦。
内容的提问来源于stack exchange,提问作者bicanul123
相关产品推荐
相关产品推荐

