gpt4 book ai didi

c++ - 如何保存 vector 迭代器的值?

转载 作者:行者123 更新时间:2023-11-30 04:06:54 35 4
gpt4 key购买 nike

我有一个成员变量,它是一个 vector 迭代器。我试图保存它以便以后可以访问它(变量名 = mIt)。但是,在这个方法中,例如,一旦方法结束,值就会被删除。我如何坚持这个值(value)?

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<>使用随机访问迭代器。

关于c++ - 如何保存 vector 迭代器的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22733506/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com