【问题标题】:Easily initialise an std::list of std::strings?轻松初始化 std::strings 的 std::list?
【发布时间】: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


    【解决方案1】:
    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库和函数

    【讨论】:

    • 顺便说一句,C++0x 的std::initializer_list 设施在幕后或多或少地做了什么?
    • 如果你要做很多:template&lt;int N, typename T&gt; T *endof(T (&amp;ra)[N]) { return ra + N; },这是 C++0x end 函数模板的一部分。
    • 另见this answer...
    • @Steve:不应该是size_t N而不是int N吗?
    • 有时我使用ptrdiff_t。这就是ptr1 - ptr2 产生的结果(ptr + int 的 int 操作数是有符号的,可以是负数)。大多数情况下,我看到size_t 被使用,但我认为这也是合理的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多