簡體   English   中英

如何保存向量迭代器的值?

[英]How do I save the value of a vector iterator?

我有一個成員變量,它是向量迭代器。 我正在嘗試保存它,以便以后可以訪問(變量名= mIt)。 但是,在此方法中,例如,一旦方法結束,該值將被擦除。 我如何堅持這個價值?

for(vector<Card>::iterator it = mCards.begin(); it != mCards.end(); ++it)
        {
            Card& currentCard = *it;
            temp = it;
            int compareResult = currentCard.GetLastName().compare(card.GetLastName());
            if (compareResult <= 0)
            {
                mIt = it;
                mCards.insert(temp, card);  // instead of it?
                return;
            }

        }

如果出於任何原因需要保存迭代器,則迭代器是錯誤的工具,因為它們可能無效。 最好使用索引,或者在保存為索引之前轉換迭代器:

size_t n = it - mCards.begin();

轉換回使用:

auto it = mCards.begin()+n;

之所以vector<>是因為vector<>使用隨機訪問迭代器。

檢查矢量迭代器失效規則,例如,這里迭代器失效規則 通常,如果您不檢查std :: vector的容量,則不應在插入元素后使用先前獲取的迭代器,因為可能會重新分配整個基礎存儲。

暫無
暫無

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

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