【发布时间】:2018-11-06 20:49:35
【问题描述】:
我有一个将 const ref 带入集合的方法。我想叫它和 m.b.将一组传递给它。如果我有的话。所以首先我看看我是否有一套:
const auto& it = mapOfSets.find("token");
if (it != std::end(mapOfSets)) {
myFunction(it.second);
} else {
MySetType emptySet;
myFunction(emptySet);
}
这样做的惯用方式是什么?我不喜欢上面的,因为对 myFunction 的调用重复了两次,并且还有一些其他参数,所以有一些不必要的代码重复。
我的 C 程序员只想更改函数以接受指针并在未找到 set 时传递 nullptr,但我觉得 C++ 现在都是为了避免指针?..
【问题讨论】:
-
it.second的类型是MySetType吧? -
是的,希望是
-
C++ 是关于避免原始 拥有 指针。像引用一样使用指针仍然可以。
-
您可以创建一个返回
optional<reference_wrapper<const T>>的助手进行查找并使用其value_or函数。但是,如果没有对引用的本机支持,那就有点尴尬了。 -
@NathanOliver 有些人还建议避免使用原始的非拥有指针,因为在阅读作者知道并遵循建议以避免原始拥有指针的代码时,这通常不是一个安全的假设
标签: c++ coding-style