Другие языки программирования и технологии

Векторы в Си

Ребят, такой вопрос. Есть числа в определенном порядке их может быть сколько угодно и очень большом количестве. Я должен сам ввести сколько рядов будет и для каждого ряда я должен генерировать новый вектор с определенным количеством ячеек сколько чисел у меня есть к примеру в F(1) (смотрите фото).

Как мне сгенерировать такие векторы и как к ним обращаться?
Как указатель на указатель.
Подробнее тут: https://stackoverflow.com/questions/1403150/how-do-you-dynamically-allocate-a-matrix
Вова Прохоров
Вова Прохоров
79 906
Лучший ответ
Вадим Негрей А вы не могли дать отдельно часть кода в моем случае.
Пример: Я ввожу количество строк, и он генерирует строки и как мне их заполнить данными.
Заранее спасибо.
я бы использовал массив структур (для хранения количества "измерений")
struct myvector {
int n;
int *v;
} array[N]; // ну или *array с динамическим выделением памяти
а использование очевидно
array[i].v[j]
Вадим Негрей Дай пожалуйста ссылку вк есть небольшой вопрос.
Зубчатый массив.
Как обращаться к элементам vector < >: по индексу, как к элементам обычного массива, перебор по значению как в моей программе for(auto t : v) { ...} t принимает значения элементов контейнера по порядку каждую итерацию цикла, через for_each(); из #include < algorithm >.
Ещё заполнять можно через generate() из #include < algorithm >. Там понадобится лямбда или функтор.

Если графы нужны:
Создай класс Узел с полями:
+id узла
+vector < unsigned > - контейнер с id всех узлов, с которыми связан этот узел, конкретный узел.
В основной функции программы создай vector < Node > - пакет узлов графа.
А потом заполняй каждый узел. Создаётся temp - временный экземпляр структуры. У него присваивается id 0 и пользователь с клавиатуры перечисляет id узлов, с которыми связан узел 0. После этого, заполненный экземпляр пакуется в контейнер vector < Node > методом push_back().
Цикл повторяется. Создаётся снова временный экземпляр класса Node с id 1 и пользователь описывает с кем связан этот узел и снова готовый экземпляр пакуется в вектор vector < Node >.
И так пока не кончатся все узлы в графе. То есть мы описываем каждый узел и складываем в пакет.

#include < iostream >
#include < vector >
#include < windows.h >
#include < iomanip >

using namespace std;

void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
vector < vector < int > > v;
cout << "Введите количество строк ";
unsigned n;
cin >> n;
for (unsigned u = 0; u < n; ++u)
{
cout.fill('-');
cout << setw(70);
cout << "\nСтрока " << u + 1 << endl;
cout << "Введите количество элементов в этой строке ";
unsigned m;
cin >> m;
vector < int > temp;
for (unsigned p = 0; p < m; ++p)
{
cout << "Введите значение элемента на позиции " << p + 1 << " в этой строке ";
int t;
cin >> t;
temp.push_back(t);
}
v.push_back(temp);
}
cout << setw(70);
cout << "\nВыводим полученный массив на экран" << endl;
cout.fill(' ');
for (auto t : v)
{
for (auto tt : t)
{
cout << setw(4) << tt;
}
cout << endl;
}
cin.get(); cin.get();
}
Adil' Katekita
Adil' Katekita
8 552