Как заставить работать такой код:
std::vector<std::vector<int> > a(2,std::vector<int>(2)) = {{1,2},{3,4}};
Так наверное никак. Можно сэмулировать одномерным массивом.
Как-то так:
#include <vector>
#include <iostream>
// nc - число строк
// n - строка
// m - столбец
int index(int nc, int n, int m)
{
return n * nc + m;
}
int main(int argc, char* argv[])
{
int m[] = {1, 2, 3, 4};
std::vector<int> v(4);
v.assign(&m[0], &m[0] + 4);
std::cout << v[index(2, 0, 0)] << std::endl;
std::cout << v[index(2, 0, 1)] << std::endl;
std::cout << v[index(2, 1, 0)] << std::endl;
std::cout << v[index(2, 1, 1)] << std::endl;
return 0;
}
Здравствуйте, Аноним, Вы писали:
А>Как заставить работать такой код:
А>А>std::vector<std::vector<int> > a(2,std::vector<int>(2)) = {{1,2},{3,4}};
А>
Boost.Assign
#include <vector>
#include <boost/assign/list_of.hpp>
int main()
{
using boost::assign::list_of;
std::vector<std::vector<int> > a = list_of(list_of(1)(2))(list_of(3)(4));
return 0;
}
Здравствуйте, Alexander G, Вы писали:
AG>AG>#include <vector>
AG>#include <boost/assign/list_of.hpp>
AG>int main()
AG>{
AG> using boost::assign::list_of;
AG> std::vector<std::vector<int> > a = list_of(list_of(1)(2))(list_of(3)(4));
AG> return 0;
AG>}
AG>
Ужасть. А почему не valarray, slice, gslice и иже с ними?
В с++ 0Х будет такая замечательная штука как
Initializer_lists
Так что еще пару лет пока стандарт обкатают и всё будет.