- 主题:[求助]一个迭代器问题
void get_first(const unordered_map<int,int>& m,void** iter) {
auto it = m.begin();
*iter = (void*)⁢
}
这个it是临时对象,返回它的地址是未定义行为
【 在 casbupt 的大作中提到: 】
: get_next中访问it->first会coredump,求助。
: #include <stdio.h>
: #include <iostream>
: ...................
--
FROM 39.190.138.*
这个也有问题,begin返回的是迭代器,不是迭代器的引用
【 在 txgx (纸上谈医) 的大作中提到: 】
: 应该auto& it = begin().
: --来自微水木3.5.1
--
FROM 39.190.138.*
只看unordered_map的定义的话,我觉得这个应该是这样子的。
iterator begin() noexcept;(since C++11)
const_iterator begin() const noexcept;(since C++11)
const_iterator cbegin() const noexcept;(since C++11)
这里面的返回都不是引用,都是一个迭代器对象,那他返回的就是一个通常意义下的临时
对象。
【 在 txgx (纸上谈医) 的大作中提到: 】
: 这个需要讨论一下。
: 两次m.begin()返回的迭代器地址不一样吗?
: 选代器也是堆栈变量?
: ...................
--
FROM 39.190.138.*