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

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

Войти
Регистрация
Восстановить пароль
 
Protss
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 40
#1

Вектор выходит за диапазон - C++

25.08.2016, 11:33. Просмотров 171. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Как сделать так чтобы вектор не выходил за диапазон?
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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (int k=0; k != ivec[ivec.size()]; ++k)
    {
        cout << (ivec[k] % 2 != 0) ? "Good luck" : "False";
 
        if (ivec[k] % 2 != 0)
            ivec[k]*=ivec[k];
 
        else ivec[k] =ivec[k];
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2016, 11:33     Вектор выходит за диапазон
Посмотрите здесь:

Rand() выходит за диапазон - C++
Две функции: inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_ = Card_suit(rand() % spades + clubs);...

Вектор ссылок и вектор указателей - C++
есть 2 задачи 1-создать вектор ссылок на Employee для хранения различных объектов произвольных классов 2-создать вектор указателей...

контейнер -вектор вложеный в вектор - C++
Помогите, пожалуйста найти ошибку. Есть строка типа string - обычное предложение из слов, разделённые пробелами. Мне нужно записать это...

Диапазон - C++
Просуммировать числа указанного диапазона. Начальное и конечное значение диапазона вводятся с клавиатуры. Программу написать с...

Диапазон значений - C++
Числу B нужно присвоить значение в зависимости от того, какое значение у числа А, но проблема в том, что конкретного значения числа А нет....

диапазон инта - C++
В 32 битовом инте диапазон значений от -2 147 483 648 до 2 147 483 647. старший бит это знак. затем идет старший бит самого числа(30...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hikari
Хитрая блондиночка $)
1447 / 954 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
25.08.2016, 11:36     Вектор выходит за диапазон #2
Цитата Сообщение от Protss Посмотреть сообщение
k != ivec[ivec.size()]
Какой смысл этого условия?
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
25.08.2016, 11:38     Вектор выходит за диапазон #3
Цитата Сообщение от Protss Посмотреть сообщение
Как сделать так чтобы вектор не выходил за диапазон?
Не писать подобного: ivec[ivec.size()].
Ferrari F1
=^_^=
553 / 440 / 93
Регистрация: 27.01.2015
Сообщений: 2,553
Записей в блоге: 1
Завершенные тесты: 1
25.08.2016, 11:44     Вектор выходит за диапазон #4
Protss, для прохода по вектору используй итераторы, ну или цикл for по диапазону
Protss
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 40
25.08.2016, 12:20  [ТС]     Вектор выходит за диапазон #5
Понятно, а я думал что вектор все равно выходит за диапазон k=5, но условие останавливает его. Но факт что он выходит)
А я тут нагородил, нужно ivec.size()

Добавлено через 9 минут
Скажите, а почему у меня выводится при k=0 010104, а при остальных k ( 9,16....)?

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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (int k=0; k != ivec.size(); ++k)
    {
        cout << (ivec[k] % 2 != 0) ? ivec[k]*=ivec[k] : ivec[k]=ivec[k];
 
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
Добавлено через 22 минуты
Кликните здесь для просмотра всего текста
с помощью итераторов, такой же вывод
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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (auto beg=ivec.begin(); beg != ivec.end(); ++beg)
    {
        cout << (*beg % 2 != 0) ? *beg*=*beg : *beg=*beg;
 
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
25.08.2016, 13:10     Вектор выходит за диапазон #6
Потому что скобочки надо уважать:
C++
1
cout << ((ivec[k] % 2 != 0) ? ivec[k]*=ivec[k] : ivec[k]=ivec[k]);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2016, 13:50     Вектор выходит за диапазон
Еще ссылки по теме:

Диапазон перечислений - C++
Как узнать диапазон перечислений? enum e2 {a = 3, b = 9}; В книге написано диапазон перечислений равен (0; 15) Говорится что...

Диапазон и поиск - C++
1. Пользователь ввел перую цифру и вторую цифру. Как вывести на экран диапазон между первой и второй цифрой ? Например числа 4 и 9. На...

Диапазон данных - C++
Я не могу понять одного: short unsigned int j - лежит в диапазоне от 0-65535 =&gt; на экран выводится 60000 (по условиям задачи), а short int...

Диапазон в switch c++ - C++
Подскажите пожалуйста, у меня есть программа которую надо сделать в switch, но у меня большой диапазон например от 31 до 75, как это...

Широкий диапазон форм - C++
У Дейтлов есть задача В 3.22 печатался квадрат из звездочек **** **** **** **** В 3.23 - такой же квадрат, но из...


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

Или воспользуйтесь поиском по форуму:
keeperkira
1 / 1 / 1
Регистрация: 24.08.2016
Сообщений: 15
25.08.2016, 13:50     Вектор выходит за диапазон #7
ivec[ivec.size()]

тут и происходит выход за диапазон. размер массива у тебя равен 5. значит запись имеет вид ivec[5];а это уже 6 элемент массива
C++
1
2
3
4
5
6
ivec[0] //1
ivec[1]//2
ivec[2]//3
ivec[3]//4
ivec[4]//5
ivec[5]// 6 элемен, ошибка!!!
решение ivec[ivec.size()-1]
Yandex
Объявления
25.08.2016, 13:50     Вектор выходит за диапазон
Ответ Создать тему
Опции темы

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