2016-11-14 5 views
0

2つのベクトルを値渡しして、それらといくつかの計算を行いたいとします。私は次のことがうまくいかない理由をちょっと混乱させています。私はまた、私は変更する必要はありませんことに気づいた瞬間までMatrix_t &の代わりにconstのMatrix_tで最初にこれをやろうでした今-.-値/参照別にベクトルを渡し、それから反復子を取得します

時間のためにこれを把握する
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()); 
} 

をしようとしています関数内で値渡しも正常ですが、どちらもうまくいきませんでした。

コンパイラは、変換エラーに関するテキストの壁を印刷します。それは私がここにコピーしない理由なのです。

+0

'const'パラメータを変更することはできませんか? –

+1

それはそうではありません。あなたは 'vector '型の要素を 'int '要素を持つベクトルでコピーしようとしています –

+0

omg-.-あなたは完全に正しいです、私はちょうどインデックスを追加し、すべて正常に動作します。本当にありがとう!私はこれを完全に監督しました... –

答えて

2

イテレータによって返されるローカルベクトルとベクトルは、異なるvalue_typeを持ちます。

イテレータはベクトルを返しますが、ローカルベクトルの要素はスカラー整数です。

これらのローカルベクトルの値の種類は?

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

ように定義イテレータによって返されるオブジェクトの値型がstd::vector<int>であるintあります。

あなたは

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

のような地元のベクトルを宣言した場合、コードが有効になります。

関連する問題