многомерный массив на векторе
От: Аноним  
Дата: 25.10.09 18:34
Оценка:
Как заставить работать такой код:
std::vector<std::vector<int> > a(2,std::vector<int>(2)) = {{1,2},{3,4}};
Re: многомерный массив на векторе
От: GamerOne Россия  
Дата: 25.10.09 19:29
Оценка:
Так наверное никак. Можно сэмулировать одномерным массивом.
Как-то так:
#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;
}
Re: многомерный массив на векторе
От: Alexander G Украина  
Дата: 26.10.09 12:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как заставить работать такой код:

А>
А>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;
}
Русский военный корабль идёт ко дну!
Re[2]: многомерный массив на векторе
От: peterbes Россия  
Дата: 08.11.09 13:24
Оценка:
Здравствуйте, 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 и иже с ними?
Re: многомерный массив на векторе
От: Yuki-no Tenshi Украина  
Дата: 09.11.09 09:06
Оценка:
В с++ 0Х будет такая замечательная штука как Initializer_lists

Так что еще пару лет пока стандарт обкатают и всё будет.
雪の天使
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.