[英]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.