C++有沒有像C#中的List<>
?類似於List<string>
用於存儲字符串數組。在C#中,C++是否有像List <string>這樣的東西?
回答
其實答案
std::vector<std::string>
std::list
是一個鏈表,並不像C#的List<T>
類的數組。
E.g.
#include <iostream> // iostream is for cout and endl; not necessary just to use vector or string
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> list;
list.push_back("foo");
list.push_back("bar");
for(vector<string>::const_iterator it = list.begin(); it != list.end(); ++it)
cout << *it << endl;
return 0;
}
std::list
的類實際上是等同於C#的LinkedList<T>
類。
.NET中的列表不是鏈接列表。您正在查找的數據結構是一個可調整大小的數組。
std::vector<std::string> list;
C++有std::vector
模板類,它對應於C#的List
。它也有與C#SingleLinkedList
對應的std::list
模板。
必須準備在C++ vector
和list
項目的調用拷貝構造函數中。所以,對於每個字符串,你都會創建一個副本。
因此,如果你在內存上有限制,或者如果你想在多個集合中存儲相同的字符串,最好使用std::vector<std::string*>
或std::vector<char*>
而不是std::vector<string>
。
'std :: list'是一個雙鏈表,而不是單鏈表。 – Xeo 2011-06-12 07:06:36
當然,但BCL沒有雙鏈表,STL也沒有單鏈表。我的意思是現有的類在保證插入/刪除時間方面是相似的。感謝您的更正。 – 2011-06-12 07:09:04
有一個指針容器是不明智的,因爲這樣的東西本質上不是例外的安全。在大多數情況下,無論如何這種事情都是不必要的,而在這樣的事情可能有必要的地方,幾乎總是有更好的解決方案。 – 2011-06-12 07:09:31
- 1. 東西像FindBugs這樣的.NET/C#
- 2. Zsh中是否有像bash_profile這樣的東西?
- 3. 在C++(或C++ 11)中是否有類似於c#的東西?
- 4. 像CHESS這樣的東西是否存在於Java中?
- 5. 是否有像.dll或.so這樣的東西,但跨平臺?
- 6. 當用UINavigationController返回時,是否有像prepareForSegue這樣的東西?
- 7. 有C#的東西像C++ std :: equal_range?
- 8. 像java一樣,C++中是否有類似timer和timertask的東西?
- 9. C#有像包東西在java中
- 10. 有沒有像C#中的Bundle一樣的東西?
- 11. 在java中是否有像malloc/free一樣的東西?
- 12. 在Centura中是否有像variadic函數那樣的東西?
- 13. 是否有像Project Sprouts這樣的東西,但在Python中實現?
- 14. Android中是否有像Asp.net中的appSettings一樣的東西?
- 15. 有沒有C++解釋器這樣的東西?
- 16. Grails在Rails中有沒有像acts_as_tree這樣的東西?
- 17. C有沒有像IDLE(python)的東西?
- 18. C有沒有像PHP ob_start的東西?
- 19. 在C#/ UWP中是否有與UIImageRenderingModeAlwaysTemplate等價的東西?
- 20. 在C++中是否有類似於typeof的東西?
- 21. 在Objective-C中是否有類似於LINQ的東西?
- 22. 真的有像Objective C++的東西嗎?
- 23. C#中List <GraphicsPath>是否可能?
- 24. .NET中有MessageQueueWatcher這樣的東西嗎?
- 25. 在Delphi中是否有像'THotKey'這樣的C#元素?
- 26. Objective-C中有沒有像SHA1CryptoServiceProvider(即C#)的東西?
- 27. 是否有電話號碼清潔劑庫這樣的東西
- 28. 是否有像Java的pkg-config一樣的東西?
- 29. 有沒有像CURLOPT_CONNECTIONTIMEOUT這樣的東西存在?
- 30. 批量讀取Mongo DB的最佳方式 - 是否有像這樣的東西?
請注意,「泛型」在C++中通常被稱爲「模板」。如果您需要它們,標準模板庫也會提供列表以外的許多容器。 – 2011-06-12 07:00:27
@Jeff:不是,它的'std :: list'。 – Nawaz 2011-06-12 07:00:27
儘管有'std :: list'你可能會想要使用'std :: vector',或者如果它是靜態的'std :: array' –
2011-06-12 07:01:04