gpt4 book ai didi

c++ - C++98 中整数集列表的初始化

转载 作者:太空狗 更新时间:2023-10-29 21:40:50 25 4
gpt4 key购买 nike

这可能看起来微不足道,但到目前为止我无法在网上找到它,所以

我想初始化一个整数集列表或一组整数集,如下所示:

list< set<int> > lsi = {{}};

或者像这样:

set< set<int> > ssi = {{5}, {6}, {7}};

在 C++98 中。这样做的原因是我必须在不接受 C++11 的提交系统中将其作为练习提交。

例如,我发现了如何从整数数组中用旧语法初始化容器

int tmp[] = {1,2,3};
set<int> s (tmp, tmp + sizeof(tmp) / sizeof(tmp));

但不是 list< set<int> > .

最佳答案

如评论中所述,如果没有 c+11/boost,这是不可能的。

也就是说,最短的初始化方法可能是重复 set 的初始化(您在问题中提到过):

int set1v[] = {10, 20, 30, 40};
int set2v[] = {11, 22, 33, 44};
int set3v[] = {15, 25, 35, 45};

set<int> setV[] = {
set<int>(set1v, set1v + sizeof(set1v) / sizeof(set1v[0])),
set<int>(set2v, set2v + sizeof(set2v) / sizeof(set2v[0])),
set<int>(set3v, set3v + sizeof(set3v) / sizeof(set3v[0]))
};

set< set<int> > mySet(setV, setV + sizeof(setV) / sizeof(setV[0]));

顺便说一句,由于您多次检查数组的大小,我建议您使用 count macro :

#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))

看起来会好一点:

#define END_OF(x) (x + COUNT_OF(x))

int set1v[] = {10, 20, 30, 40};
int set2v[] = {11, 22, 33, 44};
int set3v[] = {15, 25, 35, 45};

set<int> setV[] = {
set<int>(set1v, END_OF(set1v)),
set<int>(set2v, END_OF(set2v)),
set<int>(set3v, END_OF(set3v))
};

set< set<int> > mySet(setV, END_OF(setV));

关于c++ - C++98 中整数集列表的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238150/

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