Форум программистов, компьютерный форум 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(); ... подробнее

Показать сообщение отдельно
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428

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

23.07.2013, 12:21. Просмотров 463. Ответов 8
Метки (Все метки)

продолжение этой темы, но с другой проблемой. Ошибка в программе, читающей файлы
Пишу программу, которая принимает произвольное количество файлов с записями на вход и в конечном счете выводит эти записи отсортированные в последний принятый файл. Это неокончательный вариант программы, тут я пытаюсь загнать все записи в один контейнер-вектор.
tempset заполняется нормально, но вот copy (lists.at (i).begin (), lists.at (i).end (), output); ничего не выдает, в чем дело?
Кликните здесь для просмотра всего текста
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
60
61
#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 - 2;         //êîëè÷åñòâî ГґГ*éëîâ
    int * entries = new int [quantity];   //Г¬Г*Г±Г±ГЁГў, Гў êîòîðîì õðГ*Г*ГЁГІГ±Гї êîëè÷åñòâî Г§Г*ГЇГЁГ±ГҐГ© (ñòðîê) Гў ГЄГ*æäîì ГґГ*éëå
    for (int i = 0; i < quantity; i++)
        entries [i] = 0;
    char ch;
    for (int i = 0; i < quantity; i++) {    //ïîäñ÷¸ò êîëè÷åñòâГ* Г§Г*ГЇГЁГ±ГҐГ© Гў ГЄГ*æäîì ГґГ*éëå
        in.open (argv [i + 1]);
        while (in.get (ch))
            if ( in.peek () == '\n')
                entries [i]++;
        in.clear ();
        in.close ();
    };
    std :: ostream_iterator <string>  output (cout, "\n");
    vector <set <string> > lists (quantity);    //ГЄГ®Г*ГҐГ·Г*ûé Г¬Г*Г±Г±ГЁГў Г§Г*ГЇГЁГ±ГҐГ©
    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] ГґГ*éëГ*            
            char items [100];       //âðåìåГ*Г*Г*Гї ñòðîêГ* äëÿ õðГ*Г*ГҐГ*ГЁГї ГІГҐГЄГіГ№ГҐГ© îáðГ*ГЎГ*òûâГ*åìîé ñòðîêè
            int it = 0;
            while (in.get (ch) && ch != '\n')
                items [it++] = ch;
            string tempstr (items);
            tempset.insert (tempstr);
        };
        //copy (tempset.begin (), tempset.end (), output);
        lists.push_back (tempset);
        copy (lists.at (i).begin (), lists.at (i).end (), output);
        in.clear ();
        in.close ();
    };
    copy (lists [0].begin (), lists [0].end (), output);
    system ("pause");
    return 0;
};
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru