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

Почему не добавляется элемент в вектор? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ умные указатели http://www.cyberforum.ru/cpp-beginners/thread927500.html
у меня например есть куча юнитов, у каждого из них есть указатель на игровой ресурс (допустим камень). Есть такая задумка: когда камень иссякнет, юнит который истощил этот камень удаляет этот ресурс из памяти. Как сделать так чтобы при этом удалении все указатели указывающие на это камень обнулились?
C++ Как эффективно изучать программирование? Всем привет, хотелось бы услышать рекомендации по эффективному изучению языка C++. Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав, а дальше уже очень сложно понимать информацию. Осознаю, что теория это хорошо, но не хватает практических навыков. 1) Может нужно учить какие-то алгоритмы или разделы математики? Посоветуйте литературу. 2) Подскажите книгу, где есть... http://www.cyberforum.ru/cpp-beginners/thread927491.html
Виртуальные деструкторы C++
Можно ли вызвать деструктор базового класса вместо использования виртуальных деструкторов? class CBase { public: CBase(const char *str1) { mStr1 = new char; strcpy(mStr1, str1); }
C++ Как обмануть указатель?
Я бы хотел сделать так, чтобы функция my_function могла менять значение value, а alien_function - нет. Вносить изменения в код alien_function и Alien_class я не могу, поелику они написаны не мной. My_class { Alien_class value; } Alien_class my_function(Alien_class x) { }
C++ Ошибка в программе, читающей файлы http://www.cyberforum.ru/cpp-beginners/thread927463.html
Пишу программу, которая принимает произвольное количество файлов с записями на вход и в конечном счете выводит эти записи отсортированные в последний принятый файл. Естественно, у меня ничерта не работает и я отлаживаю программу кусками (так что позже, скорей всего, задам не один вопрос по ней же). Вот в этом куске я пытаюсь понять почему не удается нормально записать содержимое файла в...
C++ Оператор присваивания Добрый день! Помогите, пожалуйста, разобраться. Я не совсем понимаю работу перегруженного оператора присваивания в классе String, который содержит переменные-члены: указатель char *itsString и переменную unsigned short itsLen (длина строки): String& String::operator=(const String & rhs) { if (this == &rhs) return *this; delete itsString; itsLen=rhs.GetLen(); ... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.07.2013, 14:59     Почему не добавляется элемент в вектор?
Зачем вот это:
C++
1
 char items [100];
, если string используете? Если файл закрывется, то необязательно перед этим clear() делать.

Добавлено через 1 час 0 минут
Вот так попробуйте:
C++
1
vector <set <string> > lists;    //конечный массив записей
Добавлено через 11 минут
Кликните здесь для просмотра всего текста
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <algorithm>
#include <string>
#include <iterator>
#include <set>
#include <fstream>
#include <cstdlib>
#include <vector>
 
using std :: vector;
using std :: set;
using std :: cout;
using std :: cin;
using std :: string;
using std :: cerr;
using std :: ifstream;
using std :: ofstream;
 
int main (int argc, char * argv []) {
    if (argc == 1) {
        cerr << "Usage: files for input, last for output\n";
        exit (1);
    };
    ifstream in;
    ofstream out;
    
    int quantity = argc - 1;         //количество файлов
    int * entries = new int [quantity];   //массив, в котором хранится количество записей (строк) в каждом файле
    for (int i = 0; i < quantity; i++)
        entries [i] = 0;
    string temp;
    for (int i = 0; i < quantity; i++) {    //подсчёт количества записей в каждом файле
        in.open (argv [i + 1]);
        while (getline(in, temp))
            entries [i]++;
        in.close ();
    };
    std :: ostream_iterator <string, char>  output (cout, "\n");
    
    vector <set <string> > lists;    //конечный массив записей
    for (int i = 0; i < quantity; i++) {        //прочитать все файлы, кроме первого и последнего
        in.open (argv [i + 1]);                     //у входного argv [i] файла entries[i - 1] строк
        set <string> tempset;                   //временный спиок для хранения текущего обрабатываемого файла
        for (int j = 0; j < entries[i]; j++) {  // прочитать все строки argv [i] файла            
            string items; //временная строка для хранения текущей обрабатываемой строки
            getline(in, items);
            tempset.insert (items);
        };
        //copy (tempset.begin (), tempset.end (), output);
        lists.push_back (tempset);
        copy (lists.at (i).begin (), lists.at (i).end (), output);
        in.close ();
    };
    
    copy (lists [0].begin(), lists [0].end(), output);
    
    system ("pause");
    return 0;
};
 
Текущее время: 05:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru