Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29

Непонятная ошибка с вектором

27.02.2013, 21:06. Показов 4290. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу в VS ultimate 2012
Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Rus");
 
    vector<int> v;
 
    v.push_back(4);
    v.push_back(2);
    v.push_back(3);
    v.push_back(1);
 
    v[0]=1;
    v[4]=4;
 
    for(int j=0;j<v.size();j++) //ошибка ссылается сюда
        cout<<v[j]<<' ';
    cout<<endl;
    system("pause");
    return 0;
}
Ошибка: warning C4018: <: несоответствие типов со знаком и без знака
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2013, 21:06
Ответы с готовыми решениями:

Ошибка сегментации с вектором
Никак не могу разобраться с данной ошибкой!Уже все форумы перекопал. Вот код: #include &lt;vector&gt; #include &lt;string&gt; ...

Ошибка при работе с вектором
Хочу вывести сумму всех элементов массива, но когда я начинаю компилировать проект, то мне выдает ошибку в файле vector.cpp в строке 1740. ...

Ошибка при работе с вектором
Добрый вечер. у меня есть класс рабочего табеля, в котором есть поле вектора, в каждом элементе содержится количество рабочих часов в...

11
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.02.2013, 21:08
C++
1
int j=0;j<v.size()
v.size() возвращает size_t, то бишь беззнаковый тип. А j у вас объявлена как int, то бишь знаковый тип.
А сравнение знаковых и беззнаковых чисел небезопасно.
Но это не ошибка и не мешает компиляции, если что.
0
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
27.02.2013, 21:17  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
int j=0;j<v.size()
v.size() возвращает size_t, то бишь беззнаковый тип. А j у вас объявлена как int, то бишь знаковый тип.
А сравнение знаковых и беззнаковых чисел небезопасно.
Но это не ошибка и не мешает компиляции, если что.
Если что,то у меня выбивает ошибку и программа НЕ РАБОТАЕТ,или вам просто хотелось показать свои высокие знания,думая,что я написал код не скомпилировав его и решил,от нех делать,выложить его сюда и озадачить людей?
Вот вбейте этот код у себя и поделитесь результатом

Добавлено через 2 минуты
У меня выскакивает ошибка Debag Assertion failed
0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 21:20
BORSHEVIK, старина, у тебя в векторе 4 элемента. А ты пытаешься работать с 5-м посредством v[4].

C++
1
    v[4]=4;
Вот тут
0
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
27.02.2013, 21:23  [ТС]
Цитата Сообщение от BORSHEVIK Посмотреть сообщение
Пишу в VS ultimate 2012
Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Rus");
 
    vector<int> v;
 
    v.push_back(4);
    v.push_back(2);
    v.push_back(3);
    v.push_back(1);
 
    v[0]=1;
    v[4]=4;
 
    for(int j=0;j<v.size();j++) //ошибка ссылается сюда
        cout<<v[j]<<' ';
    cout<<endl;
    system("pause");
    return 0;
}
Ошибка: warning C4018: <: несоответствие типов со знаком и без знака
Я нашёл ошибку,в строке v[4]=4; ,а должно быть v[3]=4;получается,что 5 элемент нету,а попытка изменить его приводит к краху

Добавлено через 1 минуту
Цитата Сообщение от ITcrusader Посмотреть сообщение
BORSHEVIK, старина, у тебя в векторе 4 элемента. А ты пытаешься работать с 5-м посредством v[4].
Да,я уже сам увидел,но спасибо,что тоже заметили и сообщили. С самими векторами раньше дел не имел,но разве их нельзя наполнять как обычные массивы через индекс? только методом push_back?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.02.2013, 21:25
Цитата Сообщение от BORSHEVIK Посмотреть сообщение
Если что,то у меня выбивает ошибку и программа НЕ РАБОТАЕТ,или вам просто хотелось показать свои высокие знания,думая,что я написал код не скомпилировав его и решил,от нех делать,выложить его сюда и озадачить людей?
Вот вбейте этот код у себя и поделитесь результатом
Прежде чем претензии предъявлять, прочтите свой первый пост. Вопрос был по предупреждению: "warning C4018: <: несоответствие типов со знаком и без знака", на что вам и ответили. Где у вас, в первом восте, написано, что код не работает? Какой вопрос, такой и ответ.
0
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
27.02.2013, 21:27  [ТС]
В общем я понял...Чтобы можно было работать через индекс,мне сначала нужно указать размер вектора...
Всё,спасибо всем,кто отозвался

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Прежде чем претензии предъявлять, прочтите свой первый пост. Вопрос был по предупреждению: "warning C4018: <: несоответствие типов со знаком и без знака", на что вам и ответили. Какой вопрос, такой и ответ.
может вопрос я задал не совсем корректно,но мне больше не нравится "Если что",когда люди умничают не по делу
0
27.02.2013, 21:31

Не по теме:

Цитата Сообщение от BORSHEVIK Посмотреть сообщение
может вопрос я задал не совсем корректно,но мне больше не нравится "Если что",когда люди умничают не по делу
При чём здесь умничанье. Человек откуда знает: отличаете вы предупреждение от ошибки или нет? Он на всякий случай и написал.

0
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
27.02.2013, 21:41  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:

При чём здесь умничанье. Человек откуда знает: отличаете вы предупреждение от ошибки или нет? Он на всякий случай и написал.

Перечитайте ЕЩЁ РАЗ,что я написал,мне не понравилось не то,на что он мне указал,а то,что это было сказано так,буду я элементарных вещей не понимаю,а именно в конце он добавил "ЕСЛИ ЧТО".И давайте закончим об этом,я претензий ни к нему и не к вам не имею,и проблема уже была решена.Тему можно закрывать или вообще удалить за неимением интеллектуальной важности и нужности
0
Эксперт С++
 Аватар для ITcrusader
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 21:43
Цитата Сообщение от BORSHEVIK Посмотреть сообщение
С самими векторами раньше дел не имел,но разве их нельзя наполнять как обычные массивы через индекс? только методом push_back?
Нет, можно заранее выделить для них нужную память, например, объявить его так:

C++
1
vector<int> v(10); // теперь вектор содержит 10 элементов, для которых был выполнен конструктор по умолчанию
После этого с ними можно работать с помощью оператора [], но если нужно еще, придется пушить туда. И да, к тому же, оператор [] не производит контроля границ вектора, в отличае от оператора at(int), который выбрасывает исключение, если граница нарушена.
1
27.02.2013, 22:11

Не по теме:

Цитата Сообщение от BORSHEVIK Посмотреть сообщение
это было сказано так,буду я элементарных вещей не понимаю
Если пишите про предупреждение, что это ошибка, то так и есть.

0
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 29
27.02.2013, 22:16  [ТС]
Цитата Сообщение от ITcrusader Посмотреть сообщение
Нет, можно заранее выделить для них нужную память, например, объявить его так:

C++
1
vector<int> v(10); // теперь вектор содержит 10 элементов, для которых был выполнен конструктор по умолчанию
После этого с ними можно работать с помощью оператора [], но если нужно еще, придется пушить туда. И да, к тому же, оператор [] не производит контроля границ вектора, в отличие от оператора at(int), который выбрасывает исключение, если граница нарушена.
Ну да,я вообще выше уже отписывался,что именно таким образом можно будет обращаться через индекс,но всё равно спасибо за помощь,приятно осознавать,что людям не всё равно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2013, 22:16
Помогаю со студенческими работами здесь

Ошибка в коде(программа с вектором выполняется только если вызвать её второй раз)
Сабж: void vInit() { vInputing(); // Ввод вектора vector_Size = names.size(); cout &lt;&lt; &quot;Ваш вектор names:...

Непонятная ошибка
Не могу понять, где неправильно. У меня есть такая матрица А 1 4 2 1 3 6 1 5 2 2 3 5 Мне же её надо преобразовать к такому...

Непонятная ошибка!?
Есть задача: дан массив и число, переставить числа в массиве таким образом, чтобы слева от некоторой границы шли числа, меньшие или равные...

Непонятная ошибка
Хотел создать программу на контестер: найти простые числа из предложенных, но не выводить повторно. #include &lt;iostream&gt; using...

Непонятная ошибка
Добрый день дамы и господа эксперты. Писал я программу по практическому упражнению книги Лафоре. Вообщем программа...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru