簡體   English   中英

將列表插入列表向量 std::vector <std::list<unsigned> &gt; </std::list<unsigned>

[英]inserting list into a vector of lists std::vector<std::list<unsigned>>

我正在嘗試使用迭代器插入(const_iterator position,InputIterator first,InputIterator last)將列表插入到列表向量中;

std::vector<std::list<unsigned>> output;
std::list<unsigned> originalFile = {2, 6, 3, 56, 4, 29, 9, 43, 8, 12, 
            76, 45, 90, 124, 23, 11, 56, 26, 80, 13};
auto iter = originalFile.begin(); //it has 20 positive int inside
std::list<unsigned> sortedList; 
unsigned int i = 0;
    unsigned int v = 0;
    
    unsigned int numFiles = originalFile.size() / m;
    unsigned int index = originalFile.size() % m; 

    if(index != 0){
        numFiles += 1;
    }   
        while(numFiles != v)
        {       
            while(i != m)
            {
                sortedList.push_back(*iter);
                i++;
                iter++;         
            }
            sortedList.sort();

// the error point to this line with the insert function
       output.insert(output.end(),sortedList.begin(),sortedList.end()); 

            
    v++;
    i = 0;
    sortedList.clear();
  }


並且當我使用 ./build 構建文件時出現以下兩個錯誤

  1. /usr/lib/llvm-11/bin/../include/c++/v1/algorithm:1701:19:error: no viable overloaded '=' *__result = *__first;
  2. /usr/lib/llvm-11/bin/../include/c++/v1/algorithm:1710:12: error: no matching function for call to '__copy_constexpr' return __copy_constexpr(__first, __last, __result);

我也嘗試改用 push_back,但是當我使用./run gtest 運行 gtest 時出現Segmentation fault錯誤。 它構建成功,但測試失敗。

for(auto iterList = sortedList.begin(); iterList != sortedList.end(); iterList++)
{           
    output[v].push_back(*iterList);
}

另外,我嘗試將上述代碼與output.at(v).puch_back(*iterList)使用,但構建成功,它給了我錯誤C++ exception with description "vector" thrown in the test body.

output.insert(output.end(), sortedList.begin(), sortedList.end());

這將 append一系列元素(在迭代器之間)到向量的末尾。 如果你有 - 例如 - std::vector<unsigned> outputstd::list<unsigned> sortedList ,你可以這樣做。 但是,您希望將整個列表插入到列表向量中 該列表將是一個元素

output.insert(output.end(), sortedList); // <-- copy/move insertion

這看起來有點尷尬。 更好的使用

output.push_back(sortedList);

暫無
暫無

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

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