C++ 使用STL/Boost初始化硬编码集<;向量<;int>&燃气轮机;

C++ 使用STL/Boost初始化硬编码集<;向量<;int>&燃气轮机;,c++,stl,boost,initialization,C++,Stl,Boost,Initialization,正如前面提到的,我想使用STL初始化一个容器,其中元素以尽可能干净的方式硬编码。在这种情况下,元素是双重嵌套的容器: set<vector<int> > A; C++0x精细,使用g++4.4.1。STL更可取,因为我对代码的任何其他部分都不使用Boost(尽管我不介意举一个例子!)。这确实使用了g++4.4.1,带有-std=c++0x #include <set> #include <vector> using namespace std;

正如前面提到的,我想使用STL初始化一个容器,其中元素以尽可能干净的方式硬编码。在这种情况下,元素是双重嵌套的容器:

set<vector<int> > A;

C++0x精细,使用
g++
4.4.1。STL更可取,因为我对代码的任何其他部分都不使用Boost(尽管我不介意举一个例子!)。

这确实使用了g++4.4.1,带有-std=c++0x

#include <set>
#include <vector>

using namespace std;

int main()
{
    set<vector<int>> A = {{0,0,1},{0,1,0},{1,0,0},{0,0,0}};

}
#包括
#包括
使用名称空间std;
int main()
{
集合A={0,0,1},{0,1,0},{1,0,0},{0,0,0};
}
#包括
#包括
#包括
使用名称空间std;
使用名称空间boost::assign;
int main()
{
设置一个;
A=列表
(第(0)(0)(1)项清单)
(第(0)(1)(0)项清单)
(第(1)(0)(0)项的列表);
(第(0)(0)(0)项的列表);
返回0;
}

哇,这太棒了,而且很简单!这也应该是我所联系的问题的答案。有什么好的理由可以解释为什么标准要花这么长时间来实现这个功能吗?@Hooked:Standards并不是很快(ISO标准之间间隔了10年)以前的标准还有其他需要担心的事情。+1:Wow,与g++(GCC)4.6.0 20100421(实验性)一起使用-std=c++0x.Nice。c++0x不应该允许我们编写
set
而不是
set
?啊,我明白了,列表的嵌套使用,很好,谢谢!有没有可能只使用一行+=运算符就可以完成此操作?
list\u of()
对于快速编码很有用,但对于生产来说,速度太慢且资源密集。我在单元测试中广泛使用它,但在其他情况下不会使用它。
#include <set>
#include <vector>

using namespace std;

int main()
{
    set<vector<int>> A = {{0,0,1},{0,1,0},{1,0,0},{0,0,0}};

}
#include <boost/assign/list_of.hpp> 
#include <vector>
#include <set>

using namespace std;
using namespace boost::assign;

int main()
{
    set<vector<int> > A;

    A = list_of
        (list_of(0)(0)(1))
        (list_of(0)(1)(0))
        (list_of(1)(0)(0));
        (list_of(0)(0)(0));
    return 0;
}