gpt4 book ai didi

c++ - 按值/引用传递 vector 并从中获取迭代器

转载 作者:行者123 更新时间:2023-11-28 01:57:41 25 4
gpt4 key购买 nike

我想按值传递两个 vector 并对它们进行一些计算。我有点困惑为什么以下内容不起作用。我几个小时都在想办法解决这个问题 -.-

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& 而不是 const Matrix_t 来执行此操作,直到我意识到我不必在函数内部更改它们并且按值传递也很好,但它也不起作用。

编译器打印出一大堆关于转换错误的文字。这就是我不会在此处复制它的原因。

最佳答案

局部 vector 和迭代器返回的 vector 具有不同的value_type。

迭代器返回 vector ,而局部 vector 的元素是标量整数。

这些局部 vector 的值类型?定义为

std::vector<int> _mc(5);
std::vector<int> _mp(5);

int而迭代器返回的对象的值类型是std::vector<int> .

如果你像这样声明局部 vector

std::vector<std::vector<int>> _mc(5);
std::vector<std::vector<int>> _mp(5);

那么代码就是有效的。

关于c++ - 按值/引用传递 vector 并从中获取迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com