【问题标题】:Is there a way to return a vector more efficiently有没有办法更有效地返回向量
【发布时间】:2021-01-15 13:14:20
【问题描述】:

有没有办法在 c++ 中返回这样的向量(python 代码)

return [i, j]

好像是:

return {i, j}

或类似的东西,而不是事先创建一个向量,推送值然后返回该向量,就像这样

vector<int> v;
        loop
            loop
                condition
                    v.push_back(i);
                    v.push_back(j);
                }   
            }
        }
return v;

所以你可以只返回 {i , j} 而不是 push_back 语句,

另外,如果这实际上会减少运行时间。

【问题讨论】:

  • 研究std::initializer_list。这就是它存在的原因。这个问题大约在 10 年前就解决了。要回答更多,我们需要知道loops 和condition 是什么,所以现在我的 VTC 不完整。
  • 您正在寻找的功能是结构化绑定。从 c++17 开始就可以使用了。
  • 您的 Python 返回一个包含两个元素的列表,似乎与您所描述的内容无关。
  • @SebastianH 不,不是。结构化绑定与此无关(只是巧合地使用了相同的括号)。他们希望能够做到return {bunch, of, values} 而不是result.push_back(bunch); result.push_back(of); result.push_back(values)。他们可以使用 vector 从 C++11 开始的 std::initializer_list 的标准构造函数。但是,如果他们还想以某种模糊的方式将其与循环和条件结合起来,那可能会也可能不会,但谁真正知道问题是如何在没有上下文的情况下编写的。
  • @molbdnilo python 代码是相关的,因为它是我试图用 C++ 做的,但用另一种语言(Python)表示。

标签: c++ return stdvector


【解决方案1】:

有没有办法像这样返回一个向量

...

return {i, j}

是的。

另外,如果这实际上会减少运行时间。

通常不会。至少不显着。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多