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

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

Восстановить пароль Регистрация
 
Вовастый
3 / 3 / 0
Регистрация: 03.09.2010
Сообщений: 11
10.12.2012, 22:28     Нужны разъяснения по функции #1
Имеется функция:
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;
}
Выдается сообщение: - тип возвращаемого значения не соответствует типу функции.
Если первый параметр описать не как константное значение, то все гуд. Не понимаю почему не работает первый вариант, так как пример взят из книги С.Липпмана "Основы программирования на языке С++" и не хочется упускать такие тонкости.
Заранее благодарен за объяснение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 22:28     Нужны разъяснения по функции
Посмотрите здесь:

Для чего нужны callback-функции C++
C++ Нужны исходники хэш-функции
C++ Для чего нужны указатели на функции?
C++ Прошу разъяснения массива string
Функции.Зачем нужны void функции? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
10.12.2012, 22:31     Нужны разъяснения по функции #2
Цитата Сообщение от Вовастый Посмотреть сообщение
int* find
попробуйте сделать так
C++
1
int find
I.M.
 Аватар для 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
429 / 364 / 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.
 Аватар для 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
Сообщений: 11
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++ Выделение памяти под string (разъяснения)
Зачем нужны дружественные функции C++

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

Или воспользуйтесь поиском по форуму:
I.M.
 Аватар для 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     Нужны разъяснения по функции
Ответ Создать тему
Опции темы

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