gpt4 book ai didi

c++ - 为什么我不能在 map 中放置一个迭代器?

转载 作者:行者123 更新时间:2023-11-30 00:42:30 25 4
gpt4 key购买 nike

我有一个这样定义的 map

std::map<some_key_type, std::string::iterator> mIteratorMap;

还有一个名为“mHugeString”的巨大字符串。然后我像这样遍历字符串收集迭代器:

std::string::iterator It=mHugeString.begin();
std::string::iterator EndIt=mHugeString.end();
for(;It!=EndIt;++It){
...defining a key element...
if(need_to_store_an_iterator)mIteratorMap[key_of_a_right_type]=It;
}

最后我应该收到一张 map ,其中迭代器与某种键相关联。但是迭代器在通过“make_pair”与键配对时以某种方式失去了自身,除非它指向字符串末尾某处的某个位置。很难说,但也许最后 256 个字节没问题。

所以问题不在于如何避免丢失迭代器,无论如何存储它们都是一个愚蠢的想法,但为什么尝试在字符串的开头存储迭代器会失败,以及为什么在末尾的迭代器同样有效美好的?它们有什么区别?

最佳答案

我没有尝试过,但我预料到,您当然可以将迭代器值存储为映射中的值。

您知道吗,如果您更改 mHugeString 的内容,那么您之前存储的任何迭代器现在都将无效?

您可以选择将索引存储到字符串中,而不是迭代器中。

关于c++ - 为什么我不能在 map 中放置一个迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516662/

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