2D ベクトルが vector<vector<int> > det;
あり、最後の値または最近push_back
の値を別の 2D ベクトル v に割り当てたいと考えています。
これは私が試しv = *(det.rbegin());
たものですが、エラーが表示されます。それを行う正しい方法は何ですか?
エラー メッセージ: 'std::vector' から非スカラー型 'std::vector >' への変換が要求されました
質問する
77 次
1 に答える
1
2D 配列の最後のエントリは 2D 配列ではありません。つまり、タイプ vector < vector < int > > ではなく、タイプ vector < int > です。
そのため、タイプの別の変数に割り当てることはできません
ベクトル < ベクトル < int > >
これはうまくいきます:
#include<iostream>
#include<vector>
int main(){
std::vector<std::vector<int> > det, det2;
std::vector<int> vector1, vector2, vector3;
vector1.push_back(3);
vector1.push_back(4);
vector1.push_back(5);
vector2.push_back(13);
vector2.push_back(14);
vector2.push_back(15);
vector3.push_back(113);
vector3.push_back(114);
vector3.push_back(115);
std::vector<int> member_of_2darray;
det.push_back(vector1);
det.push_back(vector2);
det.push_back(vector3);
det2.push_back(det.back());
std::cout<<det2[0][2]<<std::endl; // returns 115
//last:element
std::cout<<det.back().back()<<std::endl;
}
編集: どうしてもイテレータを使用したい場合: ここに実際の例を示します:
#include<iostream>
#include<vector>
int main(){
std::vector<std::vector<int> > det, det2;
std::vector<int> vector1, vector2, vector3;
std::vector<std::vector<int> >::iterator it;
vector1.push_back(3);
vector1.push_back(4);
vector1.push_back(5);
vector2.push_back(13);
vector2.push_back(14);
vector2.push_back(15);
vector3.push_back(113);
vector3.push_back(114);
vector3.push_back(115);
std::vector<int> member_of_2darray;
det.push_back(vector1);
det.push_back(vector2);
det.push_back(vector3);
it = det.end();
det2.push_back(*(it-1));
std::cout<<det2[0][2]<<std::endl; //output: 115
}
于 2016-05-12T08:48:46.057 に答える