问题标签 [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.

0 投票
1 回答
8721 浏览

c++ - 尝试使用 boost::optional 失败

我一直在尝试将 boost optional 用于可以返回对象或 null 的函数,但我无法弄清楚。这是我到目前为止所拥有的。任何有关如何解决此问题的建议将不胜感激。

更新:

这是我的新代码,我在value = {200};

0 投票
3 回答
26210 浏览

c++ - 从 boost::optional 检索对象

假设一个方法返回类似这样的东西

现在假设我有这样的东西

现在我的问题是如何从 val 中提取 SomeClass ?

这样我就可以做这样的事情:

0 投票
2 回答
3796 浏览

c++ - 提升::可选与 T*

我试图了解何时是使用随附的一些结构的合适时间,并且对使用with referenceboost有疑问。boost::optional

假设我有以下课程,使用boost::optional

为什么我要使用上面的而不是:

它们都传达了相同的意图,即getHelper可以返回null,调用者仍然需要测试是否返回了助手。

boost::optional如果您需要知道“价值”和“非价值”之间的区别,您是否应该只使用nullptr

0 投票
3 回答
2949 浏览

c++ - 什么是 boost::optional 效率?

我有以下内容:

问题是对于 complexMap 中的某些条目,StrMap 将为空,我根本不会使用它,因此为了提高效率,我正在考虑使用 boost::optional。我的问题是 boost::optional 的效率是多少,我担心付出它的代价我最终将一无所获。

0 投票
2 回答
4532 浏览

c++ - 正在使用 std::optional和使用 int 一样高效吗?

我有一个四/八叉树数据结构。我将一个单元格的子索引/ptrs 存储在一个数组中。数组中的每个位置都表示一个孩子相对于其父母的位置,例如在 2D 中:

我知道最大子节点数是Integer类型可以表示的值的子集。-1因此,我可以通过使用诸如forInteger = intstd::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函数的返回类型和魔法值听起来是个非常糟糕的主意。我更喜欢保持一致并使用其中一个(至少在相同的上下文中)。虽然我可以重载执行与幻数比较的函数:

对于可选类型。

0 投票
2 回答
1674 浏览

c++ - boost::optional 的比较 (<)、输出 (<<) 和赋值 (=)

我有几个关于如何boost::optional工作的问题。让我们首先这样做:

  1. 总是i < 3等价于*i < 3(并且对于其他关系运算符类似)?
  2. 条件i < 3*i < 3未定义是否正确?(i还没有设置任何东西)
  3. std::cout << i应该打印什么?
  4. 我很确定这i = 3始终与*i = 3. 如果是这样,我应该更喜欢哪个?
0 投票
2 回答
11246 浏览

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?

0 投票
2 回答
1282 浏览

c++ - C++ 可选<> 和不可复制对象的延迟构造

看下面的代码,

问题是:如何使用 optional<> 延迟构建不可复制的对象。

我在示例中使用了 boost::optional,尽管我相信它现在也在 std::optional 标准中。

是的,我可以使用 scoped_ptr<>,但是我想在堆栈上分配,而不是在堆上。

我正在使用 g++,我认为在这种情况下它是 C++03 还是 C++11 无关紧要,因为它是一个基本的设计问题,而不仅仅是代码中的一个问题。

根据要求,一些错误消息,对于这个,我取消注释:

有一个答案建议直接使用 in_place ,它适用于:

但不是这个:

错误消息:

0 投票
1 回答
1288 浏览

c++ - 在进程间内存中使用 boost::optional 是否安全?

请考虑以下结构:

我正在使用 boost::interprocess 来创建共享内存区域。我对 boost::optional 的理解是它是一个有区别的联合而不是一个可为空的指针。作为一个反例,使用堆的 std::map 和 std::vector 需要显式分配器才能在进程间内存中使用它们,但是 boost::optional,我相当确定不使用堆并且等效于写作:

所以它可以开箱即用。如果有人证实这一点,我会很高兴 - 我没有看到 boost::optional 文档中明确提到了进程间案例,只是暗示。

0 投票
1 回答
987 浏览

c++ - boost::optional 从函数返回

我正在审查一些生产代码,其中一个函数说它将返回 a boost::optional,但它只返回 a double:例如

这是可接受的风格/是否有任何不安全的情况?