【发布时间】:2010-09-16 12:22:14
【问题描述】:
在 C++0x 中,我想要的是:
std::list<std::string> colours = {"red", "blue", "green", "grey", "pink", "violet"};
在标准的非 0x C++ 中最简单的方法是什么?
【问题讨论】:
标签: c++ initialization stdstring stdlist
在 C++0x 中,我想要的是:
std::list<std::string> colours = {"red", "blue", "green", "grey", "pink", "violet"};
在标准的非 0x C++ 中最简单的方法是什么?
【问题讨论】:
标签: c++ initialization stdstring stdlist
char const *x[] = {"red", "blue", "green", "grey", "pink", "violet"};
std::list<std::string> colours(x, x + sizeof(x) / sizeof(*x));
或者你可以使用像list_of("a")("b")...这样的boost库和函数
【讨论】:
std::initializer_list 设施在幕后或多或少地做了什么?
template<int N, typename T> T *endof(T (&ra)[N]) { return ra + N; },这是 C++0x end 函数模板的一部分。
size_t N而不是int N吗?
ptrdiff_t。这就是ptr1 - ptr2 产生的结果(ptr + int 的 int 操作数是有符号的,可以是负数)。大多数情况下,我看到size_t 被使用,但我认为这也是合理的:)