【问题标题】:Populate std::deque<std::vector<std::string>> with boost::assign::list_of用 boost::assign::list_of 填充 std::deque<std::vector<std::string>>
【发布时间】:2012-11-15 15:31:26
【问题描述】:

是否可以初始化该类型的对象:

std::deque<std::vector<std::string>>

通过 boost::assign::list_of

【问题讨论】:

  • 如果你的编译器支持 C++11 初始化列表,你可以做例如std::deque&lt;std::vector&lt;std::string&gt;&gt; deq = { { "foo", "bar" }, { "other", "list" } };
  • @Joachim Pileborg 我的编译器不支持 C++11

标签: c++ boost c++98


【解决方案1】:

尝试以下方法:

#include <boost/assign/list_of.hpp>
#include <deque>
#include <vector>
#include <iostream>
#include <string>

int main()
{
    std::deque<std::vector<std::string> > v =
        boost::assign::list_of
            (boost::assign::list_of("a")("b"))
            (boost::assign::list_of("c")("d"));

    std::cout << v[0][0] << "\n" <<
                 v[1][1] << "\n";
}

这是用最古老的编译器编译的,我有可用的 VC7,而不是 C++98。

【讨论】: