相关疑难解决方法(0)

为什么std :: map的move构造函数不是noexcept?

正如cppreference.com所说,

地图通常以红黑树的形式实现。

因此,移动a std::map只是将指针移动到根node+其他信息(例如大小)。为什么std::map移动构造函数未标记为noexcept

c++ move-semantics

12
推荐指数
1
解决办法
301
查看次数

是 - >为迭代器my_map.end()定义的第二个?

我正在和一个人一起工作std::map<std::string, MyClass* >.

我想测试是否my_map.find(key)返回特定指针.

现在我正在做;

auto iter = my_map.find(key);
if ((iter != my_map.end()) && (iter->second == expected)) {
    // Something wonderful has happened
}
Run Code Online (Sandbox Code Playgroud)

但是,operator *迭代器的位置需要返回引用.直觉我认为它是有效的并完全初始化?如果是这样,那my_map.end()->second将是NULL,并且(因为NULL从未预料到),我可以将我的if语句减少为:

if (iter->second == expected)
Run Code Online (Sandbox Code Playgroud)

这是否符合规范?有没有人有实际经验?恕我直言,代码变得更加清晰,可能会实现微小的性能提升.

c++ iterator stl

11
推荐指数
1
解决办法
3297
查看次数

标签 统计

c++ ×2

iterator ×1

move-semantics ×1

stl ×1