通过值/引用传递vector并从中获取迭代器

Pass vector by value/reference and get iterator from it

本文关键字:获取 迭代器 vector 引用      更新时间:2023-10-16

我想通过值传递两个向量并对它们进行一些计算。我有点困惑为什么以下不工作。我已经想了好几个小时了-.-

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。

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

这些局部向量的值类型是什么?就像

定义
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);