Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
1

Удалить данные из вектора (игра в города) - не могу понять, почему данные остаются в векторе?

29.08.2016, 11:26. Просмотров 1111. Ответов 30
Метки нет (Все метки)

Ребят, почему так выводит(все время первый город вектора)?


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
62
63
64
65
66
67
68
69
70
71
72
vector<string> wcities;
 
vector<string> Bot::Insert(string put)
{
    vector<string> vec;
    fstream file(put, ios::in | ios::out);
    if(! file.is_open())
    {
        cout << "Не могу октрыть файл!" << endl;
    }
    while(!file.eof())
    {
        string city;
        file >> city;
        vec.push_back(city);
    }
    for(vector<string>::iterator itr = vec.begin(); itr != vec.end(); itr++)
    {
        cout << *itr << endl;
    }
    file.close();
    return vec;
}
 
string Bot::Base(vector<string> vect)
{
    string wcity = vect[0];
    wcities.push_back(wcity);
    vect.erase(vect.begin());
    for(vector<string>::iterator itr = vect.begin(); itr != vect.end(); itr++)
    {
        cout << *itr << endl;
    }
    return wcity;
}
 
void Bot::Cities()
{
    string put;
    vector<string> cities_a = Insert("Base/citiesА.txt");    vector<string> cities_b = Insert("Base/citiesБ.txt");    vector<string> cities_v;
    vector<string> cities_g;    vector<string> cities_d;    vector<string> cities_e;
    vector<string> cities_j;    vector<string> cities_z;    vector<string> cities_i;
    vector<string> cities_ii;    vector<string> cities_k;    vector<string> cities_l;
    vector<string> cities_m;    vector<string> cities_n;    vector<string> cities_o;
    vector<string> cities_p;    vector<string> cities_r;    vector<string> cities_s;
    vector<string> cities_t;    vector<string> cities_y;    vector<string> cities_f;
    vector<string> cities_x;    vector<string> cities_c;    vector<string> cities_ch;
    vector<string> cities_sh;    vector<string> cities_sha;    vector<string> cities_ee;
                vector<string> cities_yu;            vector<string> cities_ya;
 
    string city;
    while (city != "стоп")
    {
        cout << "Называй город - ";
        (cin >> city).get();
        cout << endl;
        int len = city.size() - 1;
            switch (city[len])
            {
                case 'а':
                    Anim();
                    cout << "*~{Кеша}~*: " << Base(cities_a) << endl;
                    break;
                case 'б':
                    {
                    Anim();
                    cout << "*~{Кеша}~*: " << Base(cities_b) << endl;
                    break;
                    }
            }
    }
}
0
Миниатюры
Удалить данные из вектора (игра в города) - не могу понять, почему данные остаются в векторе?  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2016, 11:26
Ответы с готовыми решениями:

Файл: Не могу понять, почему данные не записываются в файл, он остается пустым.
Здравствуйте , помогите пожалуйста , с записью данных в файл. #include...

Собственно где тут ошибка? почему я не могу ввести правельно данные. Реализация класса
#include &lt;iostream&gt; using namespace std; class Person { private: int ID; ...

Получение указателя на данные в векторе
есть вектор std::vector&lt;char&gt; vLeftBuf(bs); есть ф-я которая в качестве...

Объединить данные разного типа в векторе
есть вектор из 300 товаров. Из них 100 dress, 100 PC, 100 boots. Я хочу их...

Не могу понять почему данные не записываются в БД
Есть форма: &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;...

30
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 06:56 2
hax0r, приведите Ваш код полностью.
0
Denissimo
38 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 44
30.08.2016, 09:33 3
Я так понял что основной цикл void Bot::Cities()
но там нет удаления города из вектора, с чего бы там что то удалялось
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 09:42  [ТС] 4
gru74ik, зачем вам код всего бота? Там много других тут не нужных функций, эта игра работает засчет этих 3-х функций.

Добавлено через 51 секунду
Denissimo, удаление происходит в функции Base - vect.erase(vect.begin());
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 09:54 5
Цитата Сообщение от hax0r Посмотреть сообщение
зачем вам код всего бота?
Покажите минимально компилируемый кусок кода.

Добавлено через 6 минут
hax0r, в свитче у Вас там что? Сравниваете int с char? Допустим, city.size() == 7, тогда int len = city.size() - 1 (57 строка кода), то есть len == 6. И вот это целое число 6 Вы сравниваете с символом 'а' (в первой ветке свича) или 'б' (во второй ветке свитча). Даже дефолтной ветки нет. Зачем всё это?

Добавлено через 2 минуты
И вот ещё что.
0
Operok
178 / 176 / 66
Регистрация: 15.02.2015
Сообщений: 510
Завершенные тесты: 2
30.08.2016, 10:00 6
При беглом взгляде
C++
1
string Bot::Base(vector<string> vect)
передача вектора по значению, серьёзно?
C++
1
string Bot::Base(vector<string> & vect)
1
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 11:36  [ТС] 7
Operok, я пробовал, ничего...

Добавлено через 2 минуты
gru74ik, я читал эту тему, ничего не вышло, там с len все правильно находит, я пробовал без -1 оно пробел выводит, по\тому -1 нужен чтобы найти последний символ строки
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 11:37 8
hax0r, ну что ж, ждите телепатов.
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 11:38  [ТС] 9
gru74ik, строка - это же массив символов, так вот я и обращаюсь к последнему символу строки

Добавлено через 27 секунд
gru74ik, в смысле?
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 11:41 10
hax0r, в прямом. Без минимально компилируемого куска кода о причинах ошибок можно только догадываться. Возможно, Вам повезёт и кто-то догадается.
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 11:45  [ТС] 11
gru74ik, какой минимально компилируемый, что это значит?
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 11:46 12
hax0r, который я могу в IDE запустить и он скомпилируется. Пускай с ошибками, пускай не так, как ожидается, но скомпилируется.
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 11:47  [ТС] 13
gru74ik, а этот не компилится?
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 11:49 14
hax0r, там даже мэйна нет. Как он скомпилится?
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 11:50  [ТС] 15
gru74ik, ну в пустой проект вставьте мой код, а в мэйне вызовете Cities()
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 12:15 16
Цитата Сообщение от hax0r Посмотреть сообщение
ну в пустой проект вставьте мой код, а в мэйне вызовете Cities()
hax0r, и как я это сделаю, если у меня класс Bot не определён? Какие у него конструкторы, деструкторы? Функция Anim(), например, что делает? vector <string> wcities - это что? Глобальный вектор? Данные-члены? Я же говорю, гадать долго будем.
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 12:21  [ТС] 17
gru74ik,
1. класс можете убрать, оно и без него робит.
2. Anim() это анимация будто бот набирает сообщение(ее можете убрать).
3. vector<string> wcities - да это глобальный вектор в который заносятся города которые были названы ботом.
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 12:26 18
hax0r, я от Вас пытаюсь добиться чего-то вроде такого, только компилируемого:

main.cpp

C++
1
2
3
4
5
6
7
8
9
#include "Bot.h"
 
int main()
{
    Bot b;
    b.Cities();
    
    return 0;
}


Bot.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef BOT_H
#define BOT_H
 
#include <vector>
#include <string>
 
using std::vector;
using std::string;
 
class Bot
{
    vector <string> wcities;
public:
    void Anim();
    Bot(){}
    ~Bot(){}
    vector <string> Insert(string put);
    string Base(vector <string> vect);
    void Cities();
};
 
#endif // BOT_H


Bot.cpp

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "Bot.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using std::vector;
using std::string;
using std::fstream;
using std::cout;
using std::cin;
using std::endl;
using std::ios;
 
void Bot::Anim()
{
 
}
 
vector<string> Bot::Insert(string put)
{
    vector<string> vec;
    fstream file(put, ios::in | ios::out);
    if (! file.is_open())
    {
        cout << "Не могу октрыть файл!" << endl;
    }
    while (!file.eof())
    {
        string city;
        file >> city;
        vec.push_back(city);
    }
    for (vector<string>::iterator itr = vec.begin(); itr != vec.end(); itr++)
    {
        cout << *itr << endl;
    }
    file.close();
    return vec;
}
 
string Bot::Base(vector<string> vect)
{
    string wcity = vect[0];
    wcities.push_back(wcity);
    vect.erase(vect.begin());
    for (vector<string>::iterator itr = vect.begin(); itr != vect.end(); itr++)
    {
        cout << *itr << endl;
    }
    return wcity;
}
 
void Bot::Cities()
{
    string put;
    vector<string> cities_a = Insert("Base/citiesА.txt");
    vector<string> cities_b = Insert("Base/citiesБ.txt");
    vector<string> cities_v;
    vector<string> cities_g;
    vector<string> cities_d;
    vector<string> cities_e;
    vector<string> cities_j;
    vector<string> cities_z;
    vector<string> cities_i;
    vector<string> cities_ii;
    vector<string> cities_k;
    vector<string> cities_l;
    vector<string> cities_m;
    vector<string> cities_n;
    vector<string> cities_o;
    vector<string> cities_p;
    vector<string> cities_r;
    vector<string> cities_s;
    vector<string> cities_t;
    vector<string> cities_y;
    vector<string> cities_f;
    vector<string> cities_x;
    vector<string> cities_c;
    vector<string> cities_ch;
    vector<string> cities_sh;
    vector<string> cities_sha;
    vector<string> cities_ee;
    vector<string> cities_yu;
    vector<string> cities_ya;
 
    string city;
    while (city != "стоп")
    {
        cout << "Называй город - ";
        (cin >> city).get();
        cout << endl;
        int len = city.size() - 1;
            switch (city[len])
            {
                case 'а':
                    Anim();
                    cout
                        << "*~{Кеша}~*: "
                        << Base(cities_a)
                        << endl;
                    break;
                    
                case 'б':
                    {
                    Anim();
                    cout
                        << "*~{Кеша}~*: "
                        << Base(cities_b)
                        << endl;
                    break;
                    }
            }
    }
}
0
hax0r
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 45
30.08.2016, 13:10  [ТС] 19
gru74ik, и что мне теперь сделать?
0
sourcerer
Модератор
Эксперт CЭксперт С++
4874 / 2060 / 325
Регистрация: 20.02.2013
Сообщений: 5,558
Записей в блоге: 24
Завершенные тесты: 1
30.08.2016, 13:14 20
hax0r, показать минимально компилируемый кусок кода.
0
30.08.2016, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2016, 13:14

Невводятся данные в базу не могу понять почему
&lt;? if (isset($name) &amp;&amp; isset($email) &amp;&amp; isset($location) &amp;&amp; isset($tariff)) {...

Не могу понять почему останавливается игра Змейка
Здравствуйте! Написал змейку, весьма каряво, но как то написал. Нет только...

не могу понять каки данные слать
Вопрос вот в чем, сделал я авторегисратор на сайт fank.mobi и все я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru