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

Итераторы и с чем их есть - C++

Войти
Регистрация
Восстановить пароль
 
Anion
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 16
06.04.2013, 07:35     Итераторы и с чем их есть #1
Есть vector<SomeClass> someArray. В SomeClass есть поле someField. Не могу для итератора vector'а someArray присвоить значение полю someField. Вылетает с:
Ошибка сегментирования (сделан дамп памяти)
ЧЯДНТ?
C++
1
2
3
4
vector<Action> buf_A;
buf_A.reserve(variables.size());
for (vector<Action>::iterator a = buf_A.begin(); a != buf_A.end(); a++,)
    a->action_name = "Stroka bes kotoroi ia jit ne mogu!");
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
06.04.2013, 07:45     Итераторы и с чем их есть #2
Ну падает, видимо, где-то в другом месте. Приведенный цикл вообще не будет выполнен ни разу, поскольку размер вектора buf_A - 0.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
06.04.2013, 07:49     Итераторы и с чем их есть #3
рабочий код именно так выглядет? Или это урезаный вариант?
Потому что в таком виде ошибки быть не должно, просто ни одной итерации не будет.
А так ты пытаешся присвоить значение поля еще не созданному объекту. reserve() только резервирует место в векторе, но не создает объектов.
Думаю ты хотел сделать что-то подобное
C++
1
2
3
4
5
vector<Action> buf_A;
buf_A.reserve(variables.size());
for (int i = 0; i < variables.size(); i++) {
    buf_A.push_back(Action());
    buf_A[i].action_name = "Stroka bes kotoroi ia jit ne mogu!");
Anion
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 16
06.04.2013, 07:55  [ТС]     Итераторы и с чем их есть #4
Нет падает здесь. Просто я неудачно сократил код )). Вот оригинал:
C++
1
2
3
4
5
6
vector<Action> buf_A;
buf_A.reserve(variables.size());
vector<Action>::iterator a = buf_A.begin();
vector<VarArray>::iterator v = variables.begin();
for (; v != variables.end(); a++, v++)
    a->action_name = insertVariable(action_name, *v, vars_identificator);
Добавлено через 3 минуты
Цитата Сообщение от Kastaneda Посмотреть сообщение
рабочий код именно так выглядет? Или это урезаный вариант?
Потому что в таком виде ошибки быть не должно, просто ни одной итерации не будет.
А так ты пытаешся присвоить значение поля еще не созданному объекту. reserve() только резервирует место в векторе, но не создает объектов.
Думаю ты хотел сделать что-то подобное
C++
1
2
3
4
5
vector<Action> buf_A;
buf_A.reserve(variables.size());
for (int i = 0; i < variables.size(); i++) {
    buf_A.push_back(Action());
    buf_A[i].action_name = "Stroka bes kotoroi ia jit ne mogu!");
Спасибо )). Action() как я понял даст пустой класс? Не знал...
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
06.04.2013, 07:57     Итераторы и с чем их есть #5
Не пустой, а созданный с пом. конструктора по умолчанию. А в данном случае мб имеет смысл написать конструктор, который принимает строку. (хотя, конечно, не стоит, если по смыслу не вписывается)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
06.04.2013, 07:59     Итераторы и с чем их есть #6
Ты пытаешся что-то писать в пустой вектор, отсюда и ошибка.
Anion
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 16
06.04.2013, 08:16  [ТС]     Итераторы и с чем их есть #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Ты пытаешся что-то писать в пустой вектор, отсюда и ошибка.
уже дошло )). Вместо резервирования изменил размер. Спасибо )))

Добавлено через 2 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
Не пустой, а созданный с пом. конструктора по умолчанию. А в данном случае мб имеет смысл написать конструктор, который принимает строку. (хотя, конечно, не стоит, если по смыслу не вписывается)
не впишется конструктор )
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5666 / 3145 / 356
Регистрация: 29.11.2010
Сообщений: 8,420
06.04.2013, 09:08     Итераторы и с чем их есть #8
Цитата Сообщение от Anion Посмотреть сообщение
не впишется конструктор )
если задача стоит лишь в создании объекта и последующее уникальное заполнение единственного его поля std::string (то бишь нигде не требуется заполнить другое поле с помощью конструктора с одним аргументом типа std::string), то конструктор как раз вписывается. Мало того, что это сэкономит лишнюю операцию, так еще и добавит конструирование уже осмысленного объекта, что ближе к реалиям природы.
Anion
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 16
10.04.2013, 08:07  [ТС]     Итераторы и с чем их есть #9
Цитата Сообщение от MrGluck Посмотреть сообщение
если задача стоит лишь в создании объекта и последующее уникальное заполнение единственного его поля std::string (то бишь нигде не требуется заполнить другое поле с помощью конструктора с одним аргументом типа std::string), то конструктор как раз вписывается. Мало того, что это сэкономит лишнюю операцию, так еще и добавит конструирование уже осмысленного объекта, что ближе к реалиям природы.
Я знаю что такое и для чего нужен конструктор. Но спасибо за объяснения.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.04.2013, 08:11     Итераторы и с чем их есть #10
Цитата Сообщение от Anion Посмотреть сообщение
ЧЯДНТ?
А это ещё что за чемурдос?
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
10.04.2013, 09:00     Итераторы и с чем их есть #11
Цитата Сообщение от taras atavin Посмотреть сообщение
А это ещё что за чемурдос?
Я теперь тоже так буду вопрос ставить
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.04.2013, 09:11     Итераторы и с чем их есть #12
И? А что за чемудрос то ЧЯДНТ?
Kastaneda
10.04.2013, 09:12
  #13

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
ЧЯДНТ
интуитивно могу предположить, что это "Что Я Делаю Не Так".

taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.04.2013, 09:14     Итераторы и с чем их есть #14
У гугла спросил, он его не знает.
Kastaneda
10.04.2013, 09:17
  #15

Не по теме:

я тож спросил, гугл говорит что вместе с ЧЯДНТ еще употребляется УМВР (У Меня Все Работает).

taras atavin
10.04.2013, 09:17
  #16

Не по теме:

Чемурдосы. Ближайшие родственники кракозябел, но, в отличие от них, вообще ни что не похожи, чем питаются не понятно. В некоторых компьютерных играх исполняют обязанности монстров.

Anion
10.04.2013, 23:57  [ТС]
  #17

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение

Не по теме:

Чемурдосы. Ближайшие родственники кракозябел, но, в отличие от них, вообще ни что не похожи, чем питаются не понятно. В некоторых компьютерных играх исполняют обязанности монстров.

ЧЯДНТ - есть аббревиатура фразы "Что Я Делаю Не Так". И это похоже на аббревиатуру, как ни странно.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 00:27     Итераторы и с чем их есть
Еще ссылки по теме:

C++ в коде ниже есть ошибки. в чем они и как их устранить?
Чем отличаются итераторы ::begin и ::cbegin? C++
Чем лучше открывать .h .И есть ли какие то рекомендации и предостережения в работе с ними? C++
C++ Итераторы С++
Определить, есть ли в строке слова, в которых гласных больше чем согласных C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5666 / 3145 / 356
Регистрация: 29.11.2010
Сообщений: 8,420
11.04.2013, 00:27     Итераторы и с чем их есть #18
Цитата Сообщение от taras atavin Посмотреть сообщение
У гугла спросил, он его не знает.
яндекс, первая строка, даже не открывая видно (из лурка)
Логическое продолжение фразы: ЧЯДНТ — «Что я делаю не так?»

гугл, первая строка
Ответы@Mail.Ru: Что такое умвр и чяднт?
*************** › Компьютеры, Интернет › Прочее компьютерное21 июня 2012 г. – "у меня всё работает" и "что я делаю не так?" соответственно.
Даже не открывая ссылок

Умение находить ответ в интернете - незаменимая вещь. А, интересно, как это искать чтоб не найти?
Yandex
Объявления
11.04.2013, 00:27     Итераторы и с чем их есть
Ответ Создать тему
Опции темы

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