На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Подскажите контейнер , STL
    Добрый день!

    Мне необходимо хранить двумерный массив, а какой контейнер выбрать я не представляю.
    То есть чтобы было что то типа
    vector2<int,int> Array2;
    Array2[i][j] = ....
    И тому подобное...
      std::vector<std::vector<int> >
        Я тоже обычно для этой цели использую вектор векторов, но Страуструп предлагает использовать комбинацию std::valarray и std::slice.
          Как вариант...
            Цитата
            deesan, 18.12.03, 13:35
            std::valarray и std::slice

            можно пример... blink.gif
            Также попрошу примерчик использования vector<vector<int>>.
            Огромное спасибо.
              так же как простой вектор. только путь будет чуть дольше
              vector <vectror <int>> a;

              a.at(i).at(j);
                Цитата
                AQL, 18.12.03, 20:26
                a.at(i).at(j);

                можно ли будет делать так int k = a[i][j]???
                  точно не скажу, лучше попробуй. главное - не перепутать порядок следования (выход за границы и все такое)
                  Дело в том, что при использовании обычных дин. массивов при выходе за границы мгновенно можно получить от Винды по шапке. В STL есть еще немножко зарезервированного места после последнего элемента (а иногда и множко), так что по шапке не получишь, а правильно работать не будет. ohmy.gif

                  а вообще то [] и at() практически идентичны, так что существенного рояля не играет.

                  можно писать и так:

                  v.at(i) = 100;

                  и так:

                  v[100] = 100;
                  Сообщение отредактировано: AQL -
                    Цитата
                    Mfcer__, 18.12.03, 19:19
                    Также попрошу примерчик использования vector<vector<int>>.


                    // Инициализируем матрицу размером 50x50
                    typedef std::vector<vector<int> > matrix;
                    matrix m(50, std::vector<int>(50, 0));

                    // Доступ к ячейке
                    int& cell = m[20][20];

                    // Альтернативный доступ. В случае выхода за границы будет сгенерировано исключение.
                    int& cell = m.at(20).at(20);
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0259 ]   [ 16 queries used ]   [ Generated: 3.05.24, 15:43 GMT ]