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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
unandro
2 / 2 / 0
Регистрация: 10.12.2011
Сообщений: 61
#1

Вставить значения в вектор - C++

18.05.2012, 22:19. Просмотров 811. Ответов 8
Метки нет (Все метки)

Пытаюсь вставить значения в вектор, но при запуске программы получаю ошибку сегментирования, ошибка пропадает если после добавления прерывать цикл, но это решение не подходит, как я понимаю нужно постоянно изменять размер вектора чтобы не получать ошибки, как это можно реализовать?
C++
1
2
3
4
5
6
7
8
9
    for(vector<Position>::iterator i = rabbit.begin(); i != rabbit.end(); ++i)
    {
        if(i->day % 6+1)
        {
            Position Rabbit = { i->x, i->y, 0, 0 };
            rabbit.push_back(Rabbit);
            break;
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 22:19     Вставить значения в вектор
Посмотрите здесь:

Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов - C++
Аргумент Х изменяется от начального значения 6 до конечного значения 8 с шагом 2, вектор А состоит из 6 элементов ...

Не получается вставить элемент в вектор - C++
Почему нельзя таким образом вставить элемент в вектор? #include &lt;vector&gt; using SomeVeryLongNamedType = int; int main() { ...

Вставить данные типа float в вектор - C++
Вставить данные типа float введенные с клавиатуры Если чётный номер - в конец, нечет, - в начало вектора. #include &lt;iostream&gt; ...

Вектор: вставить новый элемент после последнего положительного - C++
Дан вектор из n элементов, которые считываются с клавиатуры, Вставить новый элемент после последнего положительного.

Вектор строк, вставить в начало каждой строки число - C++
В общем, имеется вектор строк, надо вставить в начало каждой строки число, в частности номер этой строки (1, 2, 3 и т.д.), пробовал вот...

Вставить в вектор новый элемент перед элементом с заданным индексом - C++
Здравствуйте. У меня следующая проблема: Мне в программе нужно в вектор вставить в определенное место элемент. Лучше всего мне походит...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,440
Записей в блоге: 17
18.05.2012, 22:28     Вставить значения в вектор #2
Приведите весь код в том числе класса Position
И вы уверены что ошибка происходит именно при вставке, а не при доступе к элементу вектора?
unandro
2 / 2 / 0
Регистрация: 10.12.2011
Сообщений: 61
18.05.2012, 22:40  [ТС]     Вставить значения в вектор #3
Cам векторный массив
C++
1
2
3
4
5
6
7
8
9
class Position
{
    public:
        int x;
        int y;
        int day;
        int hungry;
};
vector<Position> rabbit;
В головной функции заполняю его
C++
1
2
3
4
5
    for(int i = 0; i < number_point; ++i)
    {
        Position rabbit0 = { rand() % N * step + step / 2, rand() % N * step + step / 2, rand()%30, 0 };
        rabbit.push_back(rabbit0);
    }
Дальше соответственно таймером прогоняю код выше....
Думаю что доступ есть, т.к. с прерыванием я получаю добавление еще 1 зайца от первого выполняющего условие, но если встречается 2 зайца выполняющие условия то цикл то уже прерван...
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,440
Записей в блоге: 17
18.05.2012, 22:54     Вставить значения в вектор #4
Ну судя по всему ошибка где то в ином месте потому как код
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
using namespace std;
 
struct Position
{
  int x;
  int y;
  int day;
  int hungry;
};
vector<Position> rabbit;
//-------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
system("chcp 1251");
 
int number_point=10;int N=5;int step=3;// беру отфонаря
 
for(int i = 0; i < number_point; ++i)
 {
 Position rabbit0 = { rand() % N * step + step / 2, rand() % N * step + step / 2, rand()%30, 0 };
 rabbit.push_back(rabbit0);
 }
 
for(vector<Position>::iterator i = rabbit.begin(); i != rabbit.end(); ++i)
 if(i->day % 6+1)
 {
 Position Rabbit = { i->x, i->y, 0, 0 };
 rabbit.push_back(Rabbit);
 break;
 }
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Не выдает ошибки

Хотя первый раз вижу запись для инициализации структуры
C++
1
Position rabbit0 = { rand() % N * step + step / 2, rand() % N * step + step / 2, rand()%30, 0 };
unandro
2 / 2 / 0
Регистрация: 10.12.2011
Сообщений: 61
18.05.2012, 22:58  [ТС]     Вставить значения в вектор #5
конечно не выдает, Вы же тоже прерываете его...
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,440
Записей в блоге: 17
18.05.2012, 23:02     Вставить значения в вектор #6
конечно не выдает, Вы же тоже прерываете его...
Что вы имеете введу под "прерыванием"?

Добавлено через 1 минуту
C++
1
break; //???
unandro
2 / 2 / 0
Регистрация: 10.12.2011
Сообщений: 61
18.05.2012, 23:08  [ТС]     Вставить значения в вектор #7
тьфу, нужно делать цикл->условие->цикл, затупил
Avazart
Эксперт С++
7121 / 5298 / 273
Регистрация: 10.12.2010
Сообщений: 23,440
Записей в блоге: 17
18.05.2012, 23:14     Вставить значения в вектор #8
У тебя без break бесконечный цикл по тому как одинаковые элементы просто множаться попадая под условие
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2012, 23:18     Вставить значения в вектор
Еще ссылки по теме:

Ввод значения в вектор - C++
Добрый вечер. Написал собственную реализацию модели вектора. В связи с этим возник вопрос: как сделать возможность ввода i-того значения в...

Занести значения функции на заданном интервале в вектор - C++
подскажите есть вот такая задачка k(x, y) = g(y) - x Вычисли значения ф-ции k для x от 0.0 до 5.0 с шагом 0.25, заполни значения...

Добавление значения в контейнер вектор, находящийся в map - C++
Возникла проблема: есть файл std формата: Миша 5 5 2 3 Влад 0 3 3 4 и т.д. Из него считываются данные в map &lt;string,vector&gt;. Нужно...

В двумерном массиве, по столбцам найти отрицательные значения и написать их в вектор - C++
Подскажите пожалуйста как сделать следующее: В двумерном массиве, по столбцам найти отрицательные значения и написать их в вектор, и если в...


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

Или воспользуйтесь поиском по форуму:
unandro
2 / 2 / 0
Регистрация: 10.12.2011
Сообщений: 61
18.05.2012, 23:18  [ТС]     Вставить значения в вектор #9
мне и нужен бесконечный цикл, для увеличение кол-ва зайцев в определенный момент их жизни
Yandex
Объявления
18.05.2012, 23:18     Вставить значения в вектор
Ответ Создать тему
Опции темы

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