MFC CList как функции в Linux?
Я прошел некоторые уроки по CList, который, кажется, гораздо более многофункциональный, чем std::list
C++ STL. Особенно привлекло мое внимание то, что я мог искать CList по значению, и он возвращал бы позицию (предполагая, что все значения уникальны, что всегда верно в моем случае). Я пытаюсь использовать список повышения умных указателей. Запрос списка со значением указателя или быстрое изменение значения позиции для перехода к элементу было бы очень удобно для меня. Есть ли специализированная библиотека списков, которая позволяет мне это делать?
Заранее спасибо!
2 ответа
Я бы не стал называть MFC более функциональными, чем STL, но это, безусловно, способствует разработке методов-членов и наследованию над свободными функциями и интерфейсами шаблонов.
Вы можете искать элементы, используя функции в алгоритме, такие как std::find
, std::find_if
и т. д., которые обычно работают с контейнерами STL, такими как vector
также.
Для вашего конкретного случая вы можете сделать что-то вроде этого:
#include <list>
#include <algorithm>
typedef std::list<int> IntList;
int nums[] = { 1,2,3,4,5,6,7,8,9 };
IntList numbers(nums, nums + sizeof(nums) / sizeof(int));
IntList::const_iterator found = std::find(numbers.begin(), numbers.end(), 7);
if (found != numbers.end())
;// then found is an iterator to the element containing the value 7
else
;// didn't find
Теперь, что касается поведения MFC в Linux, я бы порекомендовал Qt. Это массивный кроссплатформенный фреймворк с множеством полезных вещей. Более того, он с открытым исходным кодом и бесплатный и поставляется с собственной IDE под названием QtCreator, что тоже не плохо.
Да, есть. Это в стандартном заголовке <algorithm>
а именно шаблон функции std::find
,