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

std:: find Не нашла элемент - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Даня98
 Аватар для Даня98
27 / 27 / 8
Регистрация: 13.02.2010
Сообщений: 145
17.12.2011, 18:19     std:: find Не нашла элемент #1
Как узнать, что std:: find не нашла элемент?

Я почитал, что возвращает итератор на последний элемент... Т.е. почему у меня при
C++
1
*std:: find (a.begin(),a.end(),5)
выбивает из проги, из-за того, что элемент не найден?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.12.2011, 18:42     std:: find Не нашла элемент #2
Цитата Сообщение от Даня98 Посмотреть сообщение
Я почитал, что возвращает итератор на последний элемент
end - это не последний элемент, а элемент находящийся за последним
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.12.2011, 18:50     std:: find Не нашла элемент #3
последний - rend();
Даня98
 Аватар для Даня98
27 / 27 / 8
Регистрация: 13.02.2010
Сообщений: 145
17.12.2011, 19:00  [ТС]     std:: find Не нашла элемент #4
Mиxaил, вот такой
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <vector>
 
int main()
{
    std:: vector <int> a;
    int n,temp;
    std:: cin >> n;
 
    for (int i=0; i<n; ++i)
    {
        std:: cin >> temp;
        a.push_back(temp);
    }
 
 
    std:: cout << *a.rend() << "\n";
    system ("pause");
    return 0;
}
не работает.

А
такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <vector>
 
int main()
{
    std:: vector <int> a;
    int n,temp;
    std:: cin >> n;
 
    for (int i=0; i<n; ++i)
    {
        std:: cin >> temp;
        a.push_back(temp);
    }
 
 
    std:: cout << *a.rbegin() << "\n";
    system ("pause");
    return 0;
}
работает (и указывает на конец). Почему неработает 1 код?

Добавлено через 27 секунд
ведь указатель вроде ж на 1 элемент... или та же проблема?
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 19:05     std:: find Не нашла элемент #5
Цитата Сообщение от Mиxaил Посмотреть сообщение
последний - rend();
end() (с каким либо профексом) это не содержит элемента, его нельзя разыменовывать
Даня98
 Аватар для Даня98
27 / 27 / 8
Регистрация: 13.02.2010
Сообщений: 145
17.12.2011, 19:05  [ТС]     std:: find Не нашла элемент #6
все, дошло всё. Всем спасибо
Yandex
Объявления
17.12.2011, 19:05     std:: find Не нашла элемент
Ответ Создать тему
Опции темы

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