这可能看起来微不足道,但到目前为止我无法在网上找到它,所以
我想初始化一组整数集或一组整数集,如下所示:
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/