Динамические данные C++ – как их получить и как от них избавиться
Приведенный ниже код – это скелет программы, работающей на динамическом сборе данных. Идея состоит в том, чтобы использовать структуру, содержащую два поля: первое хранит количество элементов в коллекциях, а второе-фактическую коллекцию (динамически выделяемый вектор ints). Как видите, коллекция заполнена необходимым количеством псевдослучайных данных.
К сожалению, программа требует доработки, как самая важная функция.
Вот что я ожидаю от этой функции:
1. если коллекция пуста, она должна выделить одноэлементный вектор и сохранить в нем новое значение.
2. если коллекция не пуста, она должна выделить новый вектор с длиной, большей на единицу, чем текущий вектор, затем скопировать все элементы из старого вектора в новый, добавить новое значение к новому вектору и, наконец, освободить старый вектор.
Что я уже пробовал:
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; struct Collection { int elno; int *elements; }; void AddToCollection(Collection &col, int element) { //the first part of the funtion } void PrintCollection(Collection col) { cout << "[ "; for(int i = 0; i < col.elno; i++) cout << col.elements[i] << " "; cout << "]" << endl; } int main(void) { Collection collection = { 0, NULL }; int elems; cout << "How many elements? "; cin >> elems; srand(time(NULL)); for(int i = 0; i < elems; i++) AddToCollection(collection, rand() % 100 + 1); PrintCollection(collection); delete[] collection.elements; return 0; }