Форум программистов, компьютерный форум CyberForum.ru

Как создать двухмерный вектор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему значение tellg() не изменяется? http://www.cyberforum.ru/cpp-beginners/thread157519.html
Следующий код: #include <iostream> #include <fstream> using namespace std; void main() { ifstream file;
C++ Шифрование строки по паролю В продолжение этой темы. Всем привет. Выбрал время для дальнейших поползновений в неблагодарном деле изучения C++ :) Ну и очередной затык. Никак не могу усвоить работу с типами данных. Вот до сюда все вроде двигалось: #include <iostream> #include <string> #include <ctime> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread157509.html
C++ Не пойму как работает класс
Hi all Не пойму как работает пример #include <stdafx.h> #include <conio.h> using namespace std; class String { public: char* ptr; String(char* s){ int n = strlen(s);
Начинаю изучать C/C++ C++
Здравствуйте. Вот решил изучать C/C++, подскажите какой лучше из них, какой литературы пользоваться и какой компилятор, среда программирования выбрать. Я в этом языке полный ноль. Спасибо!
C++ Использование нововведений C++0x http://www.cyberforum.ru/cpp-beginners/thread157452.html
Красиво на самом деле... Вопрос, есть-ли резон использовать так, или новый стандарт стоит использовать в меру? #include <iostream> template <typename T> T Sum(T n, T m) { return n+m; }
C++ Повтор случайного числа в строке матрицы #include <iostream> #include <ctime> using namespace std; int main() { const int COLUMN = 8; const int ROW = 22; int matrix; srand(time (NULL)); подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
05.08.2010, 17:38     Как создать двухмерный вектор
Вот с индексами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
 
int main()
{
    const size_t row = 5;
    const size_t col = 3;
    std::vector<std::vector<int> > imatrix(row);
    // Заполнение
    for(size_t i = 0; i < row; ++i)
    {
        imatrix[i].resize(col);
        for(size_t j = 0; j < col; ++j)
            imatrix[i][j] = rand() % 666;
    }
    // Печать
    std::for_each(imatrix.begin(), imatrix.end(), [](std::vector<int>& ivec)
    {
        std::for_each(ivec.begin(), ivec.end(), [](int i)
        {
            std::cout << std::left << std::setw(5) << i;
        });
        std::cout << std::endl;
    });
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Еще вариант заполнения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
 
int main()
{
    const size_t row = 5;
    const size_t col = 3;
    std::vector<std::vector<int> > imatrix;
    // Заполнение
    for(size_t i = 0; i < row; ++i)
    {
        std::vector<int> temp;
        for(size_t j = 0; j < col; ++j)
            temp.push_back(rand() % 666);
        imatrix.push_back(temp);
    }
    // Печать
    std::for_each(imatrix.begin(), imatrix.end(), [](std::vector<int>& ivec)
    {
        std::for_each(ivec.begin(), ivec.end(), [](int i)
        {
            std::cout << std::left << std::setw(5) << i;
        });
        std::cout << std::endl;
    });
    system("pause");
    return 0;
}
Добавлено через 5 минут
Вариант с итераторами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
 
int main()
{
    const size_t row = 5;
    const size_t col = 3;
    std::vector<std::vector<int> > imatrix;
    // Заполнение
    std::generate_n(std::back_inserter(imatrix), row, [col]() -> std::vector<int>
    {
        std::vector<int> ivec;
        std::generate_n(std::back_inserter(ivec), col, []() { return rand() % 666; });
        return ivec;
    });
    // Печать
    std::for_each(imatrix.begin(), imatrix.end(), [](std::vector<int>& ivec)
    {
        std::for_each(ivec.begin(), ivec.end(), [](int i)
        {
            std::cout << std::left << std::setw(5) << i;
        });
        std::cout << std::endl;
    });
    system("pause");
    return 0;
}
Добавлено через 3 минуты
И еще один вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iomanip>
 
int main()
{
    const size_t row = 5;
    const size_t col = 3;
    std::vector<std::vector<int> > imatrix;
    // Заполнение
    for(size_t i = 0; i < row; ++i)
    {
        int iarr[col];
        for(size_t j = 0; j < col; ++j)
            iarr[j] = rand() % 666;
        imatrix.push_back(std::vector<int>(iarr, iarr + col));
    }
    // Печать
    std::for_each(imatrix.begin(), imatrix.end(), [](std::vector<int>& ivec)
    {
        std::for_each(ivec.begin(), ivec.end(), [](int i)
        {
            std::cout << std::left << std::setw(5) << i;
        });
        std::cout << std::endl;
    });
    system("pause");
    return 0;
}
Добавлено через 1 минуту

Не по теме:

PS. Наверно, можно еще много чего придумать....

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru