我希望按值传递两个向量并使用它们进行一些计算。我有点困惑为什么以下不起作用。我现在试图解决这个问题几个小时了--.-
typedef std::vector<std::vector<int> > Matrix_t;
...
void vector_product(const Matrix_t mc, const Matrix_t mp, Matrix_t& r){
std::vector<int> _mc(5);
std::vector<int> _mp(5);
_mc.insert(_mc.begin(), mc.begin(), mc.end());
_mp.insert(_mp.begin(), mp.begin(), mp.end());
}
我也尝试用Matrix_t&amp; amp;而不是const Matrix_t直到我意识到我不必在函数内部更改它们并且传递值也很好,但它也不起作用。
编译器会打印出一系列有关转换错误的文本。这就是我不能在这里复制它的原因。
答案 0 :(得分:2)
迭代器返回的局部向量和向量具有不同的value_type。
迭代器返回向量,而局部向量的元素是标量整数。
这些局部向量的值类型?定义如
std::vector<int> _mc(5);
std::vector<int> _mp(5);
是int
,而迭代器返回的对象的值类型是std::vector<int>
。
如果您要声明像
这样的本地向量std::vector<std::vector<int>> _mc(5);
std::vector<std::vector<int>> _mp(5);
然后代码才有效。