gpt4 book ai didi

c++ - std::array 类成员在编译时设置?

转载 作者:行者123 更新时间:2023-11-30 05:25:17 24 4
gpt4 key购买 nike

我有一个私有(private)成员类 std::array<int,10> m_arr;默认情况下包含零,但在一种情况下必须将其设置为其他内容。该类有一个 setter

void setArray(const std::array<int,10>& arr)
{
m_arr=arr;
}

但是我想知道是否可以针对特定情况以某种方式在编译时完成设置?提前致谢。

最佳答案

可能的解决方案如下:

#include<utility>
#include<array>

struct S {
constexpr S(): arr{} { }

template<std::size_t... I>
constexpr S(std::integer_sequence<std::size_t, I...>): arr{ I... } { }

std::array<std::size_t, 10> arr;
};

int main() {
constexpr S s1{};
constexpr S s2{std::integer_sequence<std::size_t, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1>{}};
// equivalent to: constexpr S s3{std::integer_sequence<std::size_t, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9>{}};
constexpr S s3{std::make_index_sequence<10>{}};
}

请注意,integer_sequence 是 C++14 修订版的一部分。
无论如何,您可以在网上找到适用于基于 C++11 的项目的这种结构的实现。

关于c++ - std::array 类成员在编译时设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com