2012-05-31 45 views
1

我已經瀏覽了一些關於CList的教程,這些教程似乎比C++ STL的std::list多得多。特別是引起我注意的是,我可以通過一個值搜索CList,並返回一個位置(假設所有的值都是唯一的,在我的情況下總是如此)。我正在嘗試使用boost智能指針列表。用指針的值查詢列表或快速更改位置值以跳轉到元素對我來說真的很方便。是否有任何專門的清單庫允許我這樣做?MFC CList像Linux中的功能?

在此先感謝!

+0

你是什麼意思「改變位置值跳轉到一個元素」? –

+0

很難理解你想做什麼,但我不認爲你可以用CList而不是std :: list做很多事情。你可以說得更詳細點嗎? –

+0

與列表上的標記一樣,可以在部分處理列表後存儲,然後再次用於處理列表的其餘部分。通過說存儲和加載,我只是指在一次運行期間保留在主內存中。 –

回答

2

我不需要通過STL調用MFC的更多功能,但它肯定有利於設計成員方法和繼承自由函數和模板接口。

您可以使用搜索功能元素algorithmstd::findstd::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。這是一個龐大的跨平臺框架,它有很多有用的東西。更好的是它是開源和免費的,並且附帶了它自己的稱爲QtCreator的IDE,它也不是一半壞。