Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачка по STL 
:(
    Опции темы
Juster
  Дата 23.5.2005, 20:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот вам задачка по STL. Как через алгоритм for_each вывести массив структур на экран, если для этих структур есть оперетор ввода в поток (объявлен как дружественный)?
Тут явно адаптер нужно использовать, но у меня с mem_fun не компилируется. Знаний не хватат
  Вверх
versus
Дата 24.5.2005, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.3.2005
Где: Переславль-Залесс кий

Репутация: нет
Всего: 3



хорошая задачка...

Говорят что в Boost можно сказать:

Код

for_each(a.begin(), a.end(), std::cout << _1 << ' ');


PM MAIL WWW   Вверх
Juster
Дата 24.5.2005, 09:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а между тем решение очень простое: std::copy(r.begin(), r.end(), std::ostream_iterator<internal_struct>(std::cout, "\n"));

  Вверх
Juster
Дата 24.5.2005, 09:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А вот посложнее задачка, допустим, мне нужно скопировать из вектора
Код

vector<some_struct> a 

в вектор
Код

vector<some_struct> b 

по результату определенной ф-ции bool is_correct(const somestruct arg, const string s). Эта ф-ция стравнивает какое-то поле этой структуры (имеющее тип string) с значением s. Как правильно это организовать?
  Вверх
srd
Дата 24.5.2005, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Код

std::remove_copy_if(a.begin(), a.end(), std::back_inserter(b), std::not1(std::bind2nd(std::ptr_fun(is_correct), "aa")));

Функция is_correct имеет такой протип:
Код

bool is_correct(somestruct arg, std::string s);

т.к. при попытке передавать этой функции параметры по ссылке вылазит ошибка reference to reference is illegal (MSVC++7.1). Эта же ошибка вылазит и при попытке компиляции некоторых примеров из Страуструпа 3ed. Видимо ограничение со стороны компилятора.



--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Void
Дата 26.5.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(srd @ 24.5.2005, 13:56)
Функция is_correct имеет такой протип:
Код
bool is_correct(somestruct arg, std::string s);

т.к. при попытке передавать этой функции параметры по ссылке вылазит ошибка reference to reference is illegal (MSVC++7.1). Эта же ошибка вылазит и при попытке компиляции некоторых примеров из Страуструпа 3ed. Видимо ограничение со стороны компилятора.


Прототип указан точно? Не
Код
bool is_correct(const somestruct &arg, const std::string &s);
?
В таком виде ошибку reference to reference is illegal выдает что VC 7.1, что Comeau online. А вот в первоначальном (параметры по значению) VC 7.1 пишет "member function already defined", а Comeau компилит на ура.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
srd
Дата 27.5.2005, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Прототип указан точно, такой должен компилироваться в MSVC++7.1.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Void
Дата 27.5.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(srd @ 27.5.2005, 03:01)
Прототип указан точно, такой должен компилироваться в MSVC++7.1.

Упс, прошу прощения, невнимательно прочитал сообщение. Да, в таком виде все компилируется, ошибочка вкралась... А параметры по ссылке - недочет существующей STL. Все-таки boost::bind рулит smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.