gpt4 book ai didi

c++ - 初始化 std::map 迭代器类成员

转载 作者:太空狗 更新时间:2023-10-29 19:53:42 24 4
gpt4 key购买 nike

我正在尝试这样做:

typedef std::map<std::string, time_t> my_map;
const mymap& some_function();

class bla
{
private:
my_map::iterator current
bla(const mymap& m) : current(m.begin())
{ }
}

而且它不起作用。更复杂的真实错误信息是:

error: no matching function for call to 'std::_Rb_tree_iterator, long int> >::_Rb_tree_iterator(std::map, long int>::const_iterator)'

我尝试将初始化/赋值移动到构造函数主体:

{ current = m.begin(); }

这也没有用。所以我想,current 的类型是错误的,所以我让编译器推断:

...
decltype(my_map::begin()) current;
...

这也行不通。

我所需要的只是一个在 bla 构建时设置的迭代器成员,所以我不必在一些愚蠢的额外函数中显式设置它,并且可以通过以下方式在外部迭代 map :

bool bla::do_stuff(...output...)
{
if(current = m.end())
return false;
balblabla(current);
++current;
return true;
}

最佳答案

您正在尝试将 const_iterator 分配给 iterator。有两种解决方案:

  1. 通过非常量引用获取 map (bla(my_map& m) : current(m.begin()) {})。
  2. 将成员类型更改为const_iterator

关于c++ - 初始化 std::map 迭代器类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458957/

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