Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
dima11221122
0 / 0 / 0
Регистрация: 30.07.2010
Сообщений: 9
#1

STL и функция remove_if - C++

29.09.2010, 00:09. Просмотров 1691. Ответов 1
Метки нет (Все метки)

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
29
30
31
32
33
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
.....
struct computer1
{
    int comp_number;
    int comp_mark;
};
 
struct connection1
{
    int side1;
    int side2;
    int conn_mark;
};
 
bool cond_comp(list<computer1>::iterator x)
{
    return (x->comp_mark==1);
}
 
bool cond_conn(list<connection1>::iterator y)
{
    return (y->conn_mark==1);
}
void delete1()
{
    list<computer1>::iterator x;
    x=remove_if(computers.begin(), computers.end(), cond_comp);
    computers.erase(x, computers.end());
 
    list<connection1>::iterator y;
    y=remove_if(connections.begin(), connections.end(), cond_conn);
    connections.erase(y, connections.end());
}
при компиляции указывает на ошибки в библиотеках. текст

c:\program files\microsoft visual studio 9.0\vc\include\algorithm(87) : error C2664: 'bool (std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'computer1' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1> with
1> [
1> _Ty=computer1,
1> _Secure_validation=true
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(96) : see reference to function template instantiation '_InIt std::_Find_if<std::list<_Ty>::_Iterator<_Secure_validation>,bool(__cdecl *)(std::list<_Ty>::_Iterator<true>)>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=std::list<computer1>::_Iterator<false>,
1> _Ty=computer1,
1> _Secure_validation=false,
1> _Pr=bool (__cdecl *)(std::list<computer1>::_Iterator<true>)
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1305) : see reference to function template instantiation '_InIt std::find_if<_FwdIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=std::list<computer1>::_Iterator<true>,
1> _FwdIt=std::list<computer1>::_Iterator<true>,
1> _Ty=computer1,
1> _Secure_validation=true,
1> _Pr=bool (__cdecl *)(std::list<computer1>::_Iterator<true>)
1> ]
1> c:\users\дмитрий\desktop\с\stl_computer_net\stl_computer_net\stl_computer_net.cpp(105) : see reference to function template instantiation '_FwdIt std::remove_if<std::list<_Ty>::_Iterator<_Secure_validation>,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_FwdIt,_FwdIt,_Pr)' being compiled
1> with
1> [
1> _FwdIt=std::list<computer1>::_Iterator<true>,
1> _Ty=computer1,
1> _Secure_validation=true,
1> _Pr=bool (__cdecl *)(std::list<computer1>::_Iterator<true>)
1> ]
1>c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1241) : error C2664: 'bool (std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'computer1' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1> with
1> [
1> _Ty=computer1,
1> _Secure_validation=true
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(4951) : see reference to function template instantiation '_OutIt std::_Remove_copy_if<std::list<_Ty>::_Iterator<_Secure_validation>,_OutIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<true>)>(_InIt,_InIt,_OutIt,_Pr,std::_Range_checked_iterator_tag)' being compiled
1> with
1> [
1> _OutIt=std::list<computer1>::_Iterator<true>,
1> _Ty=computer1,
1> _Secure_validation=false,
1> _InIt=std::list<computer1>::_Iterator<false>,
1> _Pr=bool (__cdecl *)(std::list<computer1>::_Iterator<true>)
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1311) : see reference to function template instantiation '_OutIt stdext::unchecked_remove_copy_if<std::list<_Ty>::_Iterator<_Secure_validation>,_FwdIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_InIt,_InIt,_OutIt,_Pr)' being compiled
1> with
1> [
1> _OutIt=std::list<computer1>::_Iterator<true>,
1> _Ty=computer1,
1> _Secure_validation=true,
1> _FwdIt=std::list<computer1>::_Iterator<true>,
1> _InIt=std::list<computer1>::_Iterator<true>,
1> _Pr=bool (__cdecl *)(std::list<computer1>::_Iterator<true>)
1> ]
1>c:\program files\microsoft visual studio 9.0\vc\include\algorithm(87) : error C2664: 'bool (std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'connection1' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1> with
1> [
1> _Ty=connection1,
1> _Secure_validation=true
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(96) : see reference to function template instantiation '_InIt std::_Find_if<std::list<_Ty>::_Iterator<_Secure_validation>,bool(__cdecl *)(std::list<_Ty>::_Iterator<true>)>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=std::list<connection1>::_Iterator<false>,
1> _Ty=connection1,
1> _Secure_validation=false,
1> _Pr=bool (__cdecl *)(std::list<connection1>::_Iterator<true>)
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1305) : see reference to function template instantiation '_InIt std::find_if<_FwdIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=std::list<connection1>::_Iterator<true>,
1> _FwdIt=std::list<connection1>::_Iterator<true>,
1> _Ty=connection1,
1> _Secure_validation=true,
1> _Pr=bool (__cdecl *)(std::list<connection1>::_Iterator<true>)
1> ]
1> c:\users\дмитрий\desktop\с\stl_computer_net\stl_computer_net\stl_computer_net.cpp(109) : see reference to function template instantiation '_FwdIt std::remove_if<std::list<_Ty>::_Iterator<_Secure_validation>,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_FwdIt,_FwdIt,_Pr)' being compiled
1> with
1> [
1> _FwdIt=std::list<connection1>::_Iterator<true>,
1> _Ty=connection1,
1> _Secure_validation=true,
1> _Pr=bool (__cdecl *)(std::list<connection1>::_Iterator<true>)
1> ]
1>c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1241) : error C2664: 'bool (std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'connection1' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1> with
1> [
1> _Ty=connection1,
1> _Secure_validation=true
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(4951) : see reference to function template instantiation '_OutIt std::_Remove_copy_if<std::list<_Ty>::_Iterator<_Secure_validation>,_OutIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<true>)>(_InIt,_InIt,_OutIt,_Pr,std::_Range_checked_iterator_tag)' being compiled
1> with
1> [
1> _OutIt=std::list<connection1>::_Iterator<true>,
1> _Ty=connection1,
1> _Secure_validation=false,
1> _InIt=std::list<connection1>::_Iterator<false>,
1> _Pr=bool (__cdecl *)(std::list<connection1>::_Iterator<true>)
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\include\algorithm(1311) : see reference to function template instantiation '_OutIt stdext::unchecked_remove_copy_if<std::list<_Ty>::_Iterator<_Secure_validation>,_FwdIt,bool(__cdecl *)(std::list<_Ty>::_Iterator<_Secure_validation>)>(_InIt,_InIt,_OutIt,_Pr)' being compiled
1> with
1> [
1> _OutIt=std::list<connection1>::_Iterator<true>,
1> _Ty=connection1,
1> _Secure_validation=true,
1> _FwdIt=std::list<connection1>::_Iterator<true>,
1> _InIt=std::list<connection1>::_Iterator<true>,
1> _Pr=bool (__cdecl *)(std::list<connection1>::_Iterator<true>)
1> ]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2010, 00:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL и функция remove_if (C++):

Метод remove_if STL - C++
Всем привет! Не могу понять почему вылезает ошибка при использовании remove_if для list. ошибка Error 1 error C3867:...

stl цикл и функция - C++
если память мне не изменяет кто то когда то показывал мне как спомощью stl организовать цикл. но цикл там какойто специфический был и вроде...

vector и функция read() из STL - C++
Привет всем, мой первый вопрос на этом форуме... Вот: Пишу программу &quot;Список сотрудников&quot;, в которой использую vector из библиотеки...

STL не работает функция search() - C++
Добрый день! Подскажите пожалуйста, почему функция search не работает в массивом, который сформирован функцией myfunct()? Данный код...

stl remove своя функция - C++
мне нужна в качестве 3 аргумента функции remove указать структура, компилятор выдаёт ошибку, как исправить?

Есть ли функция gcd(нод) в STL - C++
Есть ли функция gcd(нод) в STL. Если да, то в каком заголовочном файле P.S. Проблем с её написанием вручную не возникает, но всё-таки...

1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
29.09.2010, 00:53 #2
C++
1
2
3
4
5
6
7
8
9
bool cond_comp(const computer1& x)
{
        return (x.comp_mark==1);
}
 
bool cond_conn(const computer1& y)
{
        return (y.conn_mark==1);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2010, 00:53
Привет! Вот еще темы с ответами:

Шаблонная функция вывода для любого stl контейнера - C++
Шаблонная функция вывода для любого STL-контейнера, где в качестве параметра должен быть тип контейнера. Собственно реализация довольна...

STL list. Какая функция ищет указатель на элемент равный а ? - C++
Есть список с элементами - объектами класса А. В классе А описан operator== (он нестандартный). Вопрос, какая функция будет искать в...

Правильное использование remove_if - C++
Написал функцию, которая удаляет из последовательности типо vector элементы меньшие её среднего значения в 2 раза. Среднее значение...

Remove_if для std::list - C++
Здравствуйте! Помогите мне разобраться,пожалуйста.Перечитал кучу всего,но так и не понял ,что можно писать в аргументе метода remove_if. ...


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

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

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