2014-02-07 23 views
0

來自Java,我用來構建數據結構,我可以快速/輕鬆地引用,允許我做一些事情,比如將整數添加到列表中,並檢查整數是否爲整數在列表中。C++ Builder 2009 - 簡單的Ints列表

由於這似乎很常見,所以我希望看到C++ Builder的簡單方法。只要使用C++ Builder,我也可以使用標準的C++庫。

+0

看一看所有的標準容器:http://en.cppreference.com/w/cpp/container每個根據具體任務有利有弊。在你的情況下,似乎你想要一個(多)設置或無序(多)設置。標準庫必須與每個C++編譯器一起工作。 – Nabla

+0

我忘記了,因爲您似乎正在使用舊的編譯器(2009),那些標記爲「C++ 11」的容器將無法使用,包括unordered_(multi)set。 – Nabla

回答

4

您可以使用std::vectorstd::set。如果您想允許重複,請使用vector,如果不需要,請使用設置。與set相比,搜索vector的速度也會明顯變慢。

std::vector<int> intCheckList; 
std::set<int> intCheckSet; 
+0

我被拉到了客戶支持問題上,但我會研究這一點。只要我確認,我會接受它是否有效。 Thx –

1

mattingly890的建議的工作對我來說,這僅僅是一個跟進給了我是如何使用的設定,作爲其他基準的例子。以下是我如何插入到一個集合中並進行測試以查看該值是否在集合中的一些示例代碼。確保頂部有#include <set>

// Test std set 
std::set<int> myset; 
std::set<int>::iterator it; 
myset.insert(10); 
myset.insert(20); 
myset.insert(30); 

it = myset.find(10); 
boolean found = it!=myset.end(); 
if(found) 
    MessageDlg("Found 10", mtInformation, TMsgDlgButtons() << mbOK, 0); 

it = myset.find(15); 
found = it!=myset.end(); 
if(found) 
    MessageDlg("Found 15", mtInformation, TMsgDlgButtons() << mbOK, 0); 

it = myset.find(20); 
found = it!=myset.end(); 
if(found) 
    MessageDlg("Found 20", mtInformation, TMsgDlgButtons() << mbOK, 0); 

參考文獻:

+1

'boolean'應該是C++中的'bool',還有'set :: count()',它將返回'0'或'1',而不是象'find'這樣的迭代器。這樣可以節省你對'end()'的測試,並且你可以直接使用它作爲if條件。 – Nabla