我已经阅读了一些关于 CList 的教程,这似乎比std::list
C++ STL 的功能丰富得多。特别是引起我注意的是,我可以通过一个值搜索 CList 并且它会返回一个位置(假设所有值都是唯一的,在我的情况下总是如此)。我正在尝试使用提升智能指针列表。使用指针的值查询列表或快速更改位置值以跳转到元素对我来说非常方便。是否有任何专门的列表库可以让我这样做?
提前致谢!
就在这里。它在标准头文件<algorithm>
中,即函数模板std::find
中。
我不需要将 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
现在,就在 Linux 上获得类似 MFC 的行为而言,我推荐Qt。这是一个庞大的跨平台框架,有很多有用的东西。更好的是,它是开源和免费的,并带有自己的名为 QtCreator 的 IDE,它也不错。