用C ++创建两个值的并集/交集创建const集的标准方法?

问题描述 投票:0回答:1

假设我有

constexpr std::set<int> a = {1, 2, 3};
constexpr std::set<int> b = {3, 4, 5};

我想创建

constexpr std::set<int> c = union(a, b); // {1, 2, 3, 4, 5}

是否有一个库函数可以执行此操作而不创建我自己的联合/交叉函数?

c++ stl const constexpr
1个回答
0
投票

您可以使用lambda技巧来初始化const变量:

// need to capture `a`, `b` if this is at block scope
const std::set<int> c = []() {
    std::set<int> result;
    std::set_union(a.begin(), a.end(), b.begin(), b.end(), std::inserter(result, result.end()));
    return result;  // compiler can probably NRVO this
}();
© www.soinside.com 2019 - 2024. All rights reserved.