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,

Другие вопросы по тегам