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

Как передать итератор в качестве параметра функции? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.03.2013, 21:35     Как передать итератор в качестве параметра функции? #1
хочу вызвать функцию как-то так:
C++
1
show_string(std::cout, line.begin(), line.end());
в качестве line.begin() и line.end() выступают итераторы на std::list<std::string> line;
Как я не пытался определить параметры для функции, ничего не получается:
C++
1
2
void show_string(std::ostream& stream, std::list<std::string>::const_iterator &i,
        std::list<std::string>::const_iterator &j); // так не работает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 21:35     Как передать итератор в качестве параметра функции?
Посмотрите здесь:

C++ Можно ли в качестве параметра функции передать другую функцию?
C++ Как в макрос в качестве параметра передать строку, содержащую символ запятой?
Как передать функцию в качестве параметра? C++
Как передать метод класса в качестве параметра функции C++
C++ Как передать в качестве параметра конструктора ПОТОК,
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
17.03.2013, 21:41     Как передать итератор в качестве параметра функции? #2
C++
1
2
void show_string(std::ostream& stream, std::list<std::string>::const_iterator begin,
        std::list<std::string>::const_iterator end);
если не работает, то ошибки в студию. и тип line укажите, а то вдруг это у вас не список строк.
можно еще шаблонную функцию замутить, которая будет работать с любыми итераторами, не только с итераторами от списка.
C++
1
2
template <typename Iter>
void show_string(std::ostream& stream, Iter begin, Iter end);
а еще, возможно пригодится функция вывода списка целиком:
C++
1
void show_string(std::ostream& stream, const std::list<std::string>& lst);
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.03.2013, 21:48     Как передать итератор в качестве параметра функции? #3
xtorne21st,
C++
1
2
void Show(std::list<std::string>::const_iterator bgn, 
   std::list<std::string>::const_iterator end);
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
17.03.2013, 21:56     Как передать итератор в качестве параметра функции? #4
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>
#include <list>
 
void show_string(std::ostream& stream, std::list<std::string>::const_iterator &i,
        std::list<std::string>::const_iterator &j) {
            for (; i != j; ++i)
                std::cout << i->c_str() << " ";
}
 
int main()
{
    std::list<std::string> line;
    line.push_back("No");
    line.push_back("No");
    line.push_back("I");
    line.push_back("will");
    line.push_back("never");
    line.push_back("forget");
    show_string(std::cout, line.begin(), line.end());
    system("PAUSE>0");
    return 0;
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.03.2013, 22:05  [ТС]     Как передать итератор в качестве параметра функции? #5
go, Это весьма странно, я как раз начал именно с вашего варианта, но у меня не работало. Значит где-то тупанул.

DU, за шаблон спасибо большое.

Добавлено через 3 минуты
SummerRain, что-то у меня вариант с ссылкой не работает
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.03.2013, 22:15     Как передать итератор в качестве параметра функции? #6
Цитата Сообщение от xtorne21st Посмотреть сообщение
SummerRain, что-то у меня вариант с ссылкой не работает
У него похоже студия. Дело в том, что нужно по значению передавать.
Yandex
Объявления
17.03.2013, 22:15     Как передать итератор в качестве параметра функции?
Ответ Создать тему
Опции темы

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