Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Функция find - C++

28.08.2011, 21:11. Просмотров 2404. Ответов 3
Метки нет (Все метки)

Почему

http://www.cyberforum.ru/cpp-beginners/thread835164.html
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
#include <iostream>
#include <iterator>
#include <string>
#include <algorithm>
using namespace std;
 
template<typename first, typename second>
int find2(first str, second to_find)
{
    int n=0;
    typename first::const_iterator ite=find(str.begin(),str.end(),to_find);
    while(ite!=str.end())
    {
        n++;
        ite++;
        ite=find(ite,str.end(),to_find); //ТАК
    }
 
    return n;
};
 
 
int main()
{
    string str="string's";
    char t='s';
    cout<<find2(str,t);
}
нельзя?
Ведь когда я писал не шаблонную функцию то при передаче поиску моего итератора в виде первого аргумента всё было ок, но стоило мне сделать мою функцию шаблоном как тут же появилась ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2011, 21:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция find (C++):

Функция find
Почему не работает функция find?? Дело в библиотеке??Я смотрел проекты там она...

Как работает функция std::string::find(...)
здравствуйте есть допустим вот такой код #include &lt;iostream&gt; #include...

Как использовать функции string::find или функция strstr(str1 ,str2)
как использовать функции string::find или функция strstr(str1 ,str2) ...

Как минимально просто использовать функция std::find с последовательность типа : list<myClass*>
Добрый день. Как минимально просто использовать функция std::find с...

Функция find принимает вектор и число, которое ищется и возвращает указатель на найденное число
здравствуйте. подскажите есть вот такая задача //Написать ф-цию find, которая...

3
grizlik78
Эксперт С++
1982 / 1475 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
28.08.2011, 21:23 #2
просто ite и str.end() получились разными итераторами. Первый const, второй нет. Так что либо использовать для ite не константный итератор, либо указать функции find специализацию первого параметра явно.
Правда без typedef следующая запись выглядит жутковато:
C++
1
ite=find<typename first::const_iterator>(ite,str.end(),to_find);
1
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
28.08.2011, 21:27  [ТС] #3
grizlik78, ага, вот в чём дело, вот так бы компилятор и написал бы, ато по той информации что он выдал сложно догадаться что было не так.
0
grizlik78
Эксперт С++
1982 / 1475 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
28.08.2011, 21:32 #4
Ну мне он примерно так и написал
error: no matching function for call to ‘find(std::basic_string<char>::const_iterator&, std::basic_string<char>::iterator, char&)’
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2011, 21:32
Привет! Вот еще темы с решениями:

Find из string.h
Расскажите про функцию find из библиотеки строк. Не получается использовать, и...

Cannot find -lbgi
Подскажите, пишу в Dec C++ простой графический код: #include &lt;graphics.h&gt; int...

find() from string!
Ищу в строке вхождения подстроки, запоминаю номер. Если нашел, то удаляю...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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