| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > поиск в STL структура |
| Автор: SolRus 18.5.2012, 04:50 | ||
| подскажите как к примеру искать в структурах, а также в структуре по 1 параметру? http://liveworkspace.org/code/50c86e107a421e9e78a188e2544dd918 или вот код:
пытался найти mData(42, "es") (по всем параметрам) ошибка, также как найти по 1 параметру из структуры? к примеру 42 (только по int, исключая string)? |
| Автор: disputant 18.5.2012, 05:04 | ||
Описать оператор сравнения в mData:
или использовать find_if, передавая ему компаратор. Да, и звездочки при *it в операции вывода на экран не забудьте удалить, раз уж используете ->. Или используйте точку, но тогда нужны скобки вокруг *it. |
| Автор: borisbn 18.5.2012, 08:51 | ||||
делаешь 2 функтора
и вызываешь не find, а find_if:
http://liveworkspace.org/code/6f941f83fdfb76e4a4f994f2151b9d88 |
| Автор: borisbn 18.5.2012, 10:58 | ||
если не брезгуешь C++11, то можно и проще
http://liveworkspace.org/code/835638bab944d32f3f3ba94cb48b358d |
| Автор: SolRus 18.5.2012, 17:20 | ||||||
| большое вам спасибо) через оператор сравнения по одному можно перегрузить
и функторы понял, а вот с++11 запись выглядит странно необычно)
а почему должен брезгать? это ж новый стандарт... вопрос решен, но интересно какой вариант(оператор,функтор,с++11) быстрее? чем можно проверить? |
| Автор: borisbn 18.5.2012, 17:24 |
оператор == не даст тебе возможности искать по одному полю... скорость работы функтора и http://ru.wikipedia.org/wiki/C%2B%2B11#.D0.9B.D1.8F.D0.BC.D0.B1.D0.B4.D0.B0-.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B8_.D0.B8_.D0.B2.D1.8B.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F целиком и полностью зависит от компилятора (от настроек оптимизации и т.п.) и вообще, делай как тебе понятней, как удобнее использовать, чтобы код был понятным, расширяемым... о скорости нужно думать тогда (и только тогда) когда 1) её не хватает 2) всё остальное написано и отлажено погугли про преждевременную оптимизацию |