[英]my vector is of type <T*>, how do i now get to its value when using the iterator?
[英]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.