簡體   English   中英

在C ++中,會彈出“調試斷言失敗”窗口,並且我得到矢量迭代器不兼容的錯誤運行時

[英]In C++, Debug assertion failed window pops up & I get vector iterators incompatible error runtime

我已經看到一些SO鏈接,其中看到了類似的錯誤,並且在復制矢量(按值傳遞)時建議使用const引用矢量,但是在我的場景中,我使用的是相同的矢量(不按值傳遞) 。 但是看到這個問題。 WRT下面的代碼,我看到錯誤

調試斷言失敗窗口彈出並出現向量迭代器不兼容錯誤

在運行時當行

 itloop !=-endIter 

被擊中。

typedef vector<vector<string> tableDataType;
vector<tableDataType::Iterator> tabTypeIterVector;
tableDataType table;
FillRows(vector<string> vstr)
{
    table.push_back(vstr);
    if(some_condition_satisfied_for_this_row())
    {
        tableDataType::Iterator rowIT = table.end();
        tabTypeIterVector.push_back(rowIT);
    }
}


In another function:

AccessTableIteratorsVector()
{
auto startIter = table.begin();
auto endIter = tabTypeIterVector[0];
   for(auto itloop=startIter; itloop !=-endIter;itloop++)
   {

   }
}

似乎您正在比較對應於不同vector對象的兩個迭代器。

例如,

std::vector<int> a(5);
std::vector<int> b(5);

auto iter_a = a.begin();
auto iter_b = b.begin();

即使iter_aiter_b是同一類型,也不允許進行比較。 使用iter_a == iter_biter_a != iter_b會導致未定義的行為。

從您的帖子中還不清楚,為什么需要比較迭代器,但是您必須重新考慮實現策略。

暫無
暫無

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

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