簡體   English   中英

將迭代器解引用為 2D 向量並將其值分配給另一個 2D 向量

[英]Derefrencing an iterator to 2D vector and assigning its value to another 2D vector

我有一個二維向量vector<vector<int> > det; 我想將最后一個值或最近的push_back值分配給另一個二維向量 v。
這是我試過的v = *(det.rbegin()); 但它顯示一個錯誤。 正確的做法是什么?
錯誤消息:請求從“std::vector”轉換為非標量類型“std::vector >”

二維數組的最后一個條目不是二維數組,即類型 vector < vector < int > >,而是類型 vector < 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


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM