c++ - Initialization of list of sets of integers in C++98 -


this might seem trivial wasn't able find on web far, so

i want initialize list of sets of integers or set of sets of integers, this:

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

or maybe this:

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

in c++98. reason have submit exercise in submission system not accept c++11.

i have found out how initialize container in old syntax array of integers, example

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

but not list< set<int> >.

as mentioned in comments, not possible without c+11 / boost.

that being said, shortest way initialize repeating set's initialization (which mentioned in question):

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])); 

btw, since you're checking arrays' sizes many times i'd suggest use count macro:

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

it little better:

#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)); 

Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -