MFC CList как функции в Linux?

Я прошел несколько руководств по CList, который кажется гораздо более многофункциональным, чем std::list C++ STL. Особенно мое внимание привлекло то, что я мог искать CList по значению, и он возвращал позицию (при условии, что все значения уникальны, что всегда верно в моем случае). Я пытаюсь использовать список интеллектуальных указателей boost. Запрос списка со значением указателя или быстрое изменение значения позиции для перехода к элементу было бы очень удобно для меня. Есть ли какая-либо специализированная библиотека списков, которая позволяет мне это сделать?

Заранее спасибо!


person Subhamoy S.    schedule 31.05.2012    source источник
comment
Что вы подразумеваете под изменением значения позиции для перехода к элементу?   -  person R. Martinho Fernandes    schedule 31.05.2012
comment
Трудно понять, что вы пытаетесь сделать, но я не думаю, что вы можете многое сделать с помощью CList, а не std::list. Можете быть более конкретными?   -  person Michael J    schedule 31.05.2012
comment
Подобно маркеру в списке, который можно сохранить после частичной обработки списка, а затем снова использовать для обработки остальной части списка. Говоря «хранится и загружается», я имею в виду только сохранение в основной памяти во время одного запуска.   -  person Subhamoy S.    schedule 31.05.2012


Ответы (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, что тоже неплохо.

person AJG85    schedule 31.05.2012

Да, есть. Он находится в стандартном заголовке <algorithm>, а именно в шаблоне функции std::find.

person R. Martinho Fernandes    schedule 31.05.2012