Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
1

Конструктор для std::set

03.05.2015, 01:25. Просмотров 964. Ответов 7
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct TrainFilterCompany
 {
     TrainFilterCompany ( const set<string> & companies )  : m_Companies ( companies ) 
     { }
     
     bool operator () ( const CTrain & train ) const
     { 
         return m_Companies.find ( train . m_Company ) != m_Companies.end (); 
     }
     set <string> m_Companies;    
};
 
list<string> r5 = lines.Find("Wien","Munchen",TrainFilterCompany(set<string> { "CD", "DB" }) ); 
// я как понимаю тут ошибка, только не могу понять в чем она заключается
assert ( toText ( r5 ) == "Wien > Prague > Munchen" );
cout<<toText(r5);
Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ")" перед "{" c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 2 error C2275: std::set<_Kty>: недопустимое использование этого типа в качестве выражения c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 3 error C2143: синтаксическая ошибка: отсутствие ")" перед "{" c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 4 error C2143: синтаксическая ошибка: отсутствие ";" перед "{" c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 5 error C2143: синтаксическая ошибка: отсутствие ";" перед "}" c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 6 error C2059: синтаксическая ошибка: ) c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route
Ошибка 7 error C2059: синтаксическая ошибка: ) c:\users\ygar\desktop\задачи ученики\дима чехия\route\route\route.cpp 272 1 route

Собственно проблема, вылетает целый ворох ошибок.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2015, 01:25
Ответы с готовыми решениями:

STL std::set, std::pair, std::make_pair
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы....

итераторами для std::set
Здравствуйте! Разбирая std::set и его итераторы столкнунлась с ужасающей проблемой: когда передаю...

Перегруженный оператор () для std::set
Зачем в СТЛ в контейренах типу SET и других перегружать оператор () вот код struct...

Std::set, как добавить собственную проверку уникальности для класса?
Сразу к делу class Doc { public: Doc(){} ~Doc(){} std::wstring name; int id;

7
13468 / 7131 / 1712
Регистрация: 30.01.2014
Сообщений: 11,912
03.05.2015, 01:28 2
yGaR, похоже на то, что С++11 отключен, либо не поддерживается в твоем компиляторе.
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
03.05.2015, 01:44  [ТС] 3
C++ (Qt)
1
2
3
4
5
6
7
8
    
         set<string> st;
    st.insert("CD");
    st.insert("DB");
    list<string> r5 = lines.Find("Wien","Munchen",TrainFilterCompany(st) );
    assert ( toText ( r5 ) == "Wien > Prague > Munchen" );
    cout<<toText(r5);
//Так работает
Хмм Visual Studio 2010. попробовать в 2012 пересобрать?

Добавлено через 13 минут
C++ (Qt)
1
list<string> r7 = lines . Find ( "Wien", "Munchen", [] ( const CTrain & x ) { return x . m_Company == "CD"; } );
Подскажите что это такое, как называется, первый раз такую запись вижу =(
0
13468 / 7131 / 1712
Регистрация: 30.01.2014
Сообщений: 11,912
03.05.2015, 02:00 4
Цитата Сообщение от yGaR Посмотреть сообщение
Подскажите что это такое, как называется, первый раз такую запись вижу =(
Это лямбда-функция. Опять же, С++11.

Цитата Сообщение от yGaR Посмотреть сообщение
Хмм Visual Studio 2010. попробовать в 2012 пересобрать?
А еще лучше в 2013.

Добавлено через 3 минуты
yGaR, этот код, конечно, можно переделать, чтобы собирался и на старых компиляторах. Лямбду заменить на функтор. Brace-инициализацию в 13-строке на традиционный insert, либо на вставку через итераторы, например из массива, что-то вроде этого:
C++
1
2
3
char const * arr[] = { "CD", "DB" };
 
list<string> r5 = lines.Find("Wien","Munchen", TrainFilterCompany(set<string>(arr, arr + 2)) );
1
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
03.05.2015, 02:04  [ТС] 5
DrOffset, Большое спасибо, так то основное время на C# пишу, и про новые стандарты только мельком слышал. В VS 2013 я так понимаю поддержка С++11 есть, или уже 2015 сразу качатЬ?
0
13468 / 7131 / 1712
Регистрация: 30.01.2014
Сообщений: 11,912
03.05.2015, 02:08 6
Цитата Сообщение от yGaR Посмотреть сообщение
В VS 2013 я так понимаю поддержка С++11 есть, или уже 2015 сразу качатЬ?
Ну есть, но еще неполная, но для этого кода хватит. Полная поддержка есть в GCC и clang.
Если есть возможность выбрать, то лучше что поновее ставить, если нужна именно студия, то да, лучше сразу 2015
0
6907 / 5972 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
03.05.2015, 07:56 7
В gcc полная? Там же <codecvt> не работает, насколько я помню.
0
13468 / 7131 / 1712
Регистрация: 30.01.2014
Сообщений: 11,912
03.05.2015, 11:22 8
Цитата Сообщение от nmcf Посмотреть сообщение
В gcc полная? Там же <codecvt> не работает, насколько я помню.
Я говорил про core language.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2015, 11:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

"range-base for" и проверка на последний элемент в std::set<std::string>
Добрый день. Голова совсем не варит. Как мне организовать простую проверку на послений элемент без...

Std::set проглатывает std::string{"b"}
Олимпиадное задание. Мультиклавиатура — это обычная клавиатура с множеством выходов, каждый из...

Инициализация std::set
Как наиболее грамотно инициализировать std::set &lt;std::pair &lt;std::string, std::string&gt; &gt; значениями,...

Конструктор и set -функции
Всем привет. Можете помочь понять для чего нужно в одном классе обьявлять конструктор и создавать...


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

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

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