问题标签 [boost-optional]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 尝试使用 boost::optional 失败
我一直在尝试将 boost optional 用于可以返回对象或 null 的函数,但我无法弄清楚。这是我到目前为止所拥有的。任何有关如何解决此问题的建议将不胜感激。
更新:
这是我的新代码,我在value = {200};
c++ - 从 boost::optional 检索对象
假设一个方法返回类似这样的东西
现在假设我有这样的东西
现在我的问题是如何从 val 中提取 SomeClass ?
这样我就可以做这样的事情:
c++ - 提升::可选与 T*
我试图了解何时是使用随附的一些结构的合适时间,并且对使用with referenceboost
有疑问。boost::optional
假设我有以下课程,使用boost::optional
:
为什么我要使用上面的而不是:
它们都传达了相同的意图,即getHelper
可以返回null
,调用者仍然需要测试是否返回了助手。
boost::optional
如果您需要知道“价值”和“非价值”之间的区别,您是否应该只使用nullptr
?
c++ - 什么是 boost::optional 效率?
我有以下内容:
问题是对于 complexMap 中的某些条目,StrMap 将为空,我根本不会使用它,因此为了提高效率,我正在考虑使用 boost::optional。我的问题是 boost::optional 的效率是多少,我担心付出它的代价我最终将一无所获。
c++ - 正在使用 std::optional和使用 int 一样高效吗?
我有一个四/八叉树数据结构。我将一个单元格的子索引/ptrs 存储在一个数组中。数组中的每个位置都表示一个孩子相对于其父母的位置,例如在 2D 中:
我知道最大子节点数是Integer
类型可以表示的值的子集。-1
因此,我可以通过使用诸如forInteger = int
或std::numeric_limits<unsigned>::max()
for之类的“魔术”值来确定单元格是否缺少孩子Integer = unsigned
。这是std::optional<Integer>
不能假设的。
据我了解,这种魔法值的使用是std::optional
. 尽管如此,我还是担心std::vector<std::optional<int>>
内部循环的性能。
所以,
的性能
std::vector<std::optional<int>>
会比 的差std::vector<int>
吗?(我已经在比较“不存在”的值了)。或者,是否可以
std::optional
优化实现以提供与 raw 相同的性能int
?如何?
在我的数据结构中混合std::optional
函数的返回类型和魔法值听起来是个非常糟糕的主意。我更喜欢保持一致并使用其中一个(至少在相同的上下文中)。虽然我可以重载执行与幻数比较的函数:
对于可选类型。
c++ - boost::optional 的比较 (<)、输出 (<<) 和赋值 (=)
我有几个关于如何boost::optional
工作的问题。让我们首先这样做:
- 总是
i < 3
等价于*i < 3
(并且对于其他关系运算符类似)? - 条件
i < 3
和*i < 3
未定义是否正确?(i
还没有设置任何东西) std::cout << i
应该打印什么?- 我很确定这
i = 3
始终与*i = 3
. 如果是这样,我应该更喜欢哪个?
c++ - How to move from std::optional
Consider the following example where we parse data and pass the result to the next function:
Now let's change the code using std::optional
to handle a failed parsing step:
Is it valid to move from optional<T>::value()
? If it's ok for std::optional
is it valid for boost::optional
as well?
c++ - C++ 可选<> 和不可复制对象的延迟构造
看下面的代码,
问题是:如何使用 optional<> 延迟构建不可复制的对象。
我在示例中使用了 boost::optional,尽管我相信它现在也在 std::optional 标准中。
是的,我可以使用 scoped_ptr<>,但是我想在堆栈上分配,而不是在堆上。
我正在使用 g++,我认为在这种情况下它是 C++03 还是 C++11 无关紧要,因为它是一个基本的设计问题,而不仅仅是代码中的一个问题。
根据要求,一些错误消息,对于这个,我取消注释:
有一个答案建议直接使用 in_place ,它适用于:
但不是这个:
错误消息:
c++ - 在进程间内存中使用 boost::optional 是否安全?
请考虑以下结构:
我正在使用 boost::interprocess 来创建共享内存区域。我对 boost::optional 的理解是它是一个有区别的联合而不是一个可为空的指针。作为一个反例,使用堆的 std::map 和 std::vector 需要显式分配器才能在进程间内存中使用它们,但是 boost::optional,我相当确定不使用堆并且等效于写作:
所以它可以开箱即用。如果有人证实这一点,我会很高兴 - 我没有看到 boost::optional 文档中明确提到了进程间案例,只是暗示。
c++ - boost::optional 从函数返回
我正在审查一些生产代码,其中一个函数说它将返回 a boost::optional
,但它只返回 a double
:例如
这是可接受的风格/是否有任何不安全的情况?