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

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

Войти
Регистрация
Восстановить пароль
 
Вовастый
3 / 3 / 0
Регистрация: 03.09.2010
Сообщений: 12
#1

Нужны разъяснения по функции - C++

10.12.2012, 22:28. Просмотров 273. Ответов 6
Метки нет (Все метки)

Имеется функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <vector>
 
using namespace std;
 
int* find(const vector<int> &vec, int value)
{
    for (int i = 0; i < vec.size(); ++i)
        if (vec[i] == value)
            return &vec[i];
    return 0;
}
Выдается сообщение: - тип возвращаемого значения не соответствует типу функции.
Если первый параметр описать не как константное значение, то все гуд. Не понимаю почему не работает первый вариант, так как пример взят из книги С.Липпмана "Основы программирования на языке С++" и не хочется упускать такие тонкости.
Заранее благодарен за объяснение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
10.12.2012, 22:31     Нужны разъяснения по функции #2
Цитата Сообщение от Вовастый Посмотреть сообщение
int* find
попробуйте сделать так
C++
1
int find
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
10.12.2012, 22:34     Нужны разъяснения по функции #3
Вовастый, вектор же константный. А вы просто указатель возвращаете, с которым можно делать что угодно
C++
1
const int* find(const vector<int> &vec, int value)
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
10.12.2012, 22:35     Нужны разъяснения по функции #4
так попробуйте.
C++
1
2
3
4
5
6
7
int find(const vector<int> &vec, int value)
{
    for (int i = 0; i < vec.size(); ++i)
        if (vec[i] == value)
            return vec[i];
    return 0;
}
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
10.12.2012, 22:38     Нужны разъяснения по функции #5
Цитата Сообщение от SeregaC++ Посмотреть сообщение
так попробуйте.
C++
1
2
3
4
5
6
7
int find(const vector<int> &vec, int value)
{
    for (int i = 0; i < vec.size(); ++i)
        if (vec[i] == value)
            return vec[i];
    return 0;
}
Тогда уж true или false возвращать)
Вовастый
3 / 3 / 0
Регистрация: 03.09.2010
Сообщений: 12
10.12.2012, 23:42  [ТС]     Нужны разъяснения по функции #6
Цитата Сообщение от SeregaC++ Посмотреть сообщение
так попробуйте.
C++
1
2
3
4
5
6
7
int find(const vector<int> &vec, int value)
{
    for (int i = 0; i < vec.size(); ++i)
        if (vec[i] == value)
            return vec[i];
    return 0;
}
тогда функция будет возвращать значение, а должна возвращать адрес элемента вектора
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2012, 23:45     Нужны разъяснения по функции
Еще ссылки по теме:

C++ Нужны пояснения
Зачем нужны дружественные функции C++
C++ Для чего нужны функции void, не возращающие никаких значений?
C++ Ошибка отсутствия аргументов в функции, но они мне там и не нужны

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

Или воспользуйтесь поиском по форуму:
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
10.12.2012, 23:45     Нужны разъяснения по функции #7
Вовастый, можно еще возвращать индекс элемента или -1.
Можно возвращать итератор на нужный элемент или vector end
Yandex
Объявления
10.12.2012, 23:45     Нужны разъяснения по функции
Ответ Создать тему
Опции темы

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