gpt4 book ai didi

C++ - 声明一个仅包含非连续索引值的数组

转载 作者:行者123 更新时间:2023-12-03 14:41:01 24 4
gpt4 key购买 nike

我要怎么组合

string test[8];
test[3] = "Bar";
test[7] = "Foo";

合并成一个单独的声明?
也许像 string test[8] = {3: "Bar", 7: "Foo"};?

最佳答案

您是 std::array 的粉丝吗?然后你可以这样做:

#include <array>
#include <initializer_list>
#include <iostream>
#include <string>

template<typename T, unsigned n>
std::array<T, n> sparse_array(std::initializer_list<std::pair<unsigned, T>> inits)
{
std::array<T, n> result;
for (auto&& p : inits)
{
result[p.first] = std::move(p.second);
}
return result;
}

int main()
{
auto test = sparse_array<std::string, 8>({
{3, "Bar"},
{7, "Foo"}
});
std::cout << test[7] << test[3] << '\n';
}

虽然我真的不认为额外的复杂性是值得的。

关于C++ - 声明一个仅包含非连续索引值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38519012/

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