Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как сохранить float в переменной типа char? https://www.cyberforum.ru/ cpp-beginners/ thread1725395.html
Всем здрасьте. Как можно записать float в char ? И как потом float вытащить из char, если он будет находится примерно посередине ну или в начале? float x; char str // Запих x в str //......
Очень большое число при компиляции программы C++
#include <iostream>// подключение библиотеки управления потоками ввода-вывода using namespace std;//общее пользование пространством имен std void main() {//заголовок главной программы int i, j,...
C++ Споткнулся о пузырек
Христос Воскрес, люди добрые! Написал программку, но она что-то не совсем хорошо работает, своего серого вещества не хватает, будьте добры укажите где я накосячил. include "stdafx.h" #include...
C++ Вывод в файл #include "stdafx.h" #include <iostream> #include <cmath> #include <string> #include <fstream> double f(double x, double y) { return (pow(x,3)); https://www.cyberforum.ru/ cpp-beginners/ thread1725371.html
C++ GetPixel и его странности https://www.cyberforum.ru/ cpp-beginners/ thread1725358.html
дело такое: есть функция которая должна искать цвет в RGB на определённом пикселе (где находится курсор) выглядит она так POINT pt; HDC WinDC = GetDC(NULL); while (true) {...
C++ Работа в файлах в С++
Задание звучит так: Замена в тексте каждого символа, стоящего после заданного символа, другим заданным символом, причём после каждой замены заменённый символ становится искомым, а искомый -...
C++ Класс ServiceLayer
Пытаюсь реализовать паттерн Service_Layer но не получается доступиться через него к классу данных(Data) и классу интерфейса(File). Подскажите где ошибка. #include <iostream> #include <fstream>...
C++ Класс - сортировка - перегрузка операций Доброго времени суток! Прошу помочь или натолкнуть на путь, который решит мою маленькую задачку. Программу запилил через конструкторы -> с параметрами и без. Выводит ФИО и отслеживает городские и... https://www.cyberforum.ru/ cpp-beginners/ thread1725319.html
C++ Подсчёт суммы https://www.cyberforum.ru/ cpp-beginners/ thread1725302.html
Есть структура, в которой есть поле цена (Price), необходимо подсчитать сумму всех цен. Всё работает, только выводит целое значение, а нужно что бы выводил вещественное. Я использовал atoi, float...
C++ Использование указателя this Доброго времени суток Ошибка при первом использовании указателя this, не в ходе компиляции, а как только заходит на это строчку в след ф-ции класса: // изменение модели ноутбука void... https://www.cyberforum.ru/ cpp-beginners/ thread1725300.html
Special user
35 / 35 / 16
Регистрация: 07.10.2013
Сообщений: 121
0

Struct / Vector / Expression: vector subscript out of range

01.05.2016, 20:48. Просмотров 826. Ответов 2
Метки (Все метки)

Добрый вечер.

Имеется структура:
C++
1
2
3
4
5
6
struct Contact
{
public:
    string name;
    vector<string> phoneNumber;
};
Фрагмент кода из функции:
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
void editContact(vector<Contact> &contacts, fstream &pbook)
{
    int key = -1;
    /*...*/
    //Если key после определенных действий остается равным -1, то return
        for (unsigned int i = 0; i < contacts[key].phoneNumber.size(); ++i)
        {
            cout << "1. Удалить номер " << contacts[key].phoneNumber[i] << "\n"
                << "2. Изменить номер " << contacts[key].phoneNumber[i] << "\n"
                << "3. Оставить без изменений номер " << contacts[key].phoneNumber[i] << "\n";
            do
            {
                cout << "Ввод >: ";
                cin >> choose;
            } while (choose != 1 && choose != 2 && choose != 3);
            if (choose == 1)
            {
                if (contacts[key].phoneNumber.size() == 1 && contacts.size() == 1)
                {
                    cout << "\nНевозможно удалить последний контакт.\n";
                }
                else if (contacts[key].phoneNumber.size() == 1 && contacts.size() > 1)
                {
                    contacts.erase(contacts.begin() + key);
                    cout << "\nКонтакт успешно удален\n";
                }
                else
                {
                    contacts[key].phoneNumber.erase(contacts[key].phoneNumber.begin() + i);
                    cout << "Номер успешно удален.\n";
                }
            }
        }
    /*...*/ 
}
Имеется файл file.dat
Код
Александр +12345*
Алексей +54321*
После обработки данного файла структура примет вид:
C++
1
2
contacts[0].name = "Александр", contacts[1].name = "Алексей";
contacts[0].phoneNumber[0] = "+12345", contacts[1].phoneNumber[0] = "+54321";
Если после всех действий, которые были выше, key = 0 (то есть имеет индекс первого элемента в структуре), то функция работает по всем критериям правильно:
1) При удалении номера → удаляет контакт (см. if (contacts[key].phoneNumber.size() == 1 && contacts.size() == 1))
2) При изменении номера → изменяет номер
3) Оставить без изменений → оставить без изменений

Проблема: если key > 1 (1, 2, ..., n), где n - количество контактов
То при обработке условия:
C++
1
2
3
4
5
else if (contacts[key].phoneNumber.size() == 1 && contacts.size() > 1)
{
    contacts.erase(contacts.begin() + key);
    cout << "\nКонтакт успешно удален\n";
}
Приложение падает:
Struct / Vector / Expression: vector subscript out of range


Вернуться к обсуждению:
Struct / Vector / Expression: vector subscript out of range
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2016, 20:48
Готовые ответы и решения:

Expression: vector subscript out of range
Дано задание: Напишите функцию, которая: - называется PalindromFilter - возвращает...

Expression:vector subscript out of range
Написал программа, скинул в текстовый файл неотформатированный текс, все работало, как только...

expression vector subscript out of range
Появляется ошибка при компиляции expression vector subscript out of range.Нужна помощь. Сортировка...

Vector subscript out of range
Доброе утро, прочитал статью про векторы и решил создать один из них, однако при выводе он выдаёт...

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