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

Как создать динамический массив структур? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выведите на экран значение переменных в строку и в столбик http://www.cyberforum.ru/cpp-beginners/thread375875.html
Помогите написать программу на С: Введите три переменные a (тип int), b (тип double) и с (тип bool) их значение определите при инициализации. Выведите на экран значение переменных в строку и в столбик, используя оператор printf.
C++ Упорядочить блоки по величине их диагоналей (по убыванию значений их диагоналей). Итак, есть следующая задача: В заданной двумерной матрице выделить 3 блока по 2 строки и 2 столбца (блоки расположены на главной диагонали матрицы). Упорядочить блоки по величине их диагоналей (по убыванию значений их диагоналей). Сколько раз я не перечитывал условие, так и не смог его понять. Буду благодарен, если кто-нибудь объяснит мне, что от меня хотят, ну и заодно, при случае,... http://www.cyberforum.ru/cpp-beginners/thread375869.html
pictureBox C++
здравтсвуйте) в windows forms applications в pictureBox необходимо нарисовать сетку(таблицу), где нужно будет закрашивать элементы этой сетки по щелчку мыши и по двойному щелчку он бы "раскрашивался".(необходимо получить координаты в сетке этого прмоугольника-строку и столбец..) подскажите пожалуйста как это можно реализовать. весь алгоритм я написал но с этим крутой затык..
C++ как правильно?
подскажите как правильно записать? есть ли другой способ записать кроме этого? sqrt(sqrt(y/x))
C++ Найти в строке слово-перевертыш максимальной длины http://www.cyberforum.ru/cpp-beginners/thread375853.html
Дана строка в виде предложения. Найти в ней слово-перевертыш максимальной длинны. Словом будем считать набор символов, отделенных с двух сторон пробелами.
C++ STRING в численный тип char в число я умею переводить: atoi(),atol(),atof(). Но это C функции, со STRING не работают уже. Есть ли функция для STRING перевода в число или придётся самостоятельно прописывать? подробнее

Показать сообщение отдельно
konstantine_
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 14
15.04.2014, 13:40     Как создать динамический массив структур?
В этом случае компилится, но опять так же уходит в core dump. Тогда я решил перепровериться и опять в данное условие вернул введённую заранее переменную tmp_unixtime и тогда у меня всё сработало в штатном режиме.

Bash
1
2
3
4
5
6
7
8
konstantine@mgate1_9:25:08_> ./compile.sh ../flow.export
clang++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Segmentation fault (core dumped)
konstantine@mgate1_9:25:11_> 
konstantine@mgate1_9:25:12_> ./compile.sh ../flow.export
clang++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Строк считанно: 662
konstantine@mgate1_9:26:20_>
Вся беда в том, что я вроде научился добавлять в вектор элементы, но вот считывать их от туда нет и тем более производить какие то с ними операции - НЕТ. В интернете мало примеров как работать с вектором типа структуры, либо я плохо ищу.

Добавлено через 3 часа 43 минуты
В общем нагуглил я документацию по стандартной библиотеке шаблонов (STL) сейчас вникаю, так что я думаю мой вопрос исчерпан.

Вот документация где можно найти ответы на вопросы данной темы:
http://www.firststeps.ru/mfc/stl/
http://progs.biz/cpp/stl/lessons/001.aspx
http://www.solarix.ru/for_developers/cpp/stl/stl.shtml
http://www.codenet.ru/progr/cpp/stl/Using-STL.php

Всем спасибо!

Добавлено через 3 часа 14 минут
Я долго думал и всё таки решил выложить пример ответа на мой вопрос, т.к. неаверное не все захотят читать литературу.

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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
 
using namespace std;
 
struct list {
    unsigned long srcaddr;
    unsigned long dstaddr;
    int prot;
};
 
int main()
{
    list TEST;
    vector<list> v_test;
    cout << "Size Vector " << v_test.size() << endl;
    cout << "Capacity Vector " << v_test.capacity() << endl;
    cout << "Max_Size Vector " << v_test.max_size() << endl;
 
    for (int i=0;i<5;i++)   { // Как будто читаем из файла и заполняем данными
        TEST.srcaddr = 1999998887 + i;
        TEST.dstaddr = 1995558887 - i;
        TEST.prot = 2 * i;
        v_test.push_back(TEST);
        }
    cout << "Size Vector " << v_test.size() << endl;
    cout << "Capacity Vector " << v_test.capacity() << endl;
    cout << "Max_Size Vector " << v_test.max_size() << endl;
 
    vector <list>::iterator p;
    cout << "Содержимое: \n";
    for (p = v_test.begin(); p < v_test.end(); p++)
        cout << p->srcaddr << " " << p->dstaddr << " " << p->prot << endl;
 
    v_test.resize(3);
    cout << "Содержимое: \n";
    for (p = v_test.begin(); p < v_test.end(); p++)
        cout << p->srcaddr << " " << p->dstaddr << " " << p->prot << endl;
return 0;
}
Как я понял, т.к. у нас тип вектора не стандартного типа данных, а типа структуры, то соответственно доступ к элементам вектора нужно получать через итераторы(аля указатели). При этом работа с итераторами полностью аналогична указателям, т.е. т.к. у нас указатель на СТРУКТУРУ, то мы используем p->srcaddr, если бы был стандартный тип, например char, то можно было просто разименовать указатель - *p.

Знатоки поправьте меня где я не прав.

Добавлено через 7 минут
Блин я сам себе противоречу)))

Оказывается можно не только итераторами, но и через ссылки:

C++
1
2
3
4
    v_test.resize(3); //Уменьшаем размер ветора до трёх элементов
    cout << "Содержимое: \n";
    for (int i = 0; i < v_test.size(); i++)
        cout << v_test[i].srcaddr << " " << v_test[i].dstaddr << " " << v_test[i].prot << endl;
Больше способов получить данные из вектора я пока что не нашёл
 
Текущее время: 13:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru