-1

2D ベクトルが vector<vector<int> > det;あり、最後の値または最近push_backの値を別の 2D ベクトル v に割り当てたいと考えています。
これは私が試しv = *(det.rbegin());たものですが、エラーが表示されます。それを行う正しい方法は何ですか?
エラー メッセージ: 'std::vector' から非スカラー型 'std::vector >' への変換が要求されました

4

1 に答える 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 に答える