Использование STL / Boost для инициализации жестко заданного набора <vector <int>> - PullRequest
4 голосов
/ 30 апреля 2010

Как этот вопрос , который уже задавался, я хотел бы инициализировать контейнер с использованием STL, где элементы жестко запрограммированы самым чистым способом. В этом случае элементы представляют собой дважды вложенный контейнер:

set<vector<int> > A;

И я хотел бы (например) поместить следующие значения в:

A = [[0,0,1],[0,1,0],[1,0,0],[0,0,0]];

C ++ 0x в порядке, используя g++ 4.4.1. STL предпочтительнее, поскольку я не использую Boost для каких-либо других частей кода (хотя я не возражаю против примера с ним!).

Ответы [ 2 ]

10 голосов
/ 30 апреля 2010

Используется 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}};

}
7 голосов
/ 30 апреля 2010
#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;
}
...