gpt4 book ai didi

c++ - 获取 std::vector::iterator 的索引

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:22 24 4
gpt4 key购买 nike

这就是我到目前为止所尝试的:

class menu_item
{
private:

// ....

std::vector<std::string> options_;
std::vector<std::string>::iterator current_;

public:
menu_item(std::string name, std::vector<std::string> options)
: name_(name), options_(options)
{
current_ = begin(options_);
}

// ....

const int curr_opt_id()
{
return current_ - begin(options_);
}
};

但是 curr_opt_id() 返回 -24。有人知道我在这里做错了什么吗?

最佳答案

当你添加到一个 vector 时,内部存储有可能被重新分配,这将使所有现有的迭代器失效。对无效迭代器进行算术运算不会有好结果。

参见 Iterator invalidation rules

关于c++ - 获取 std::vector<std::string>::iterator 的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362651/

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