C 中的列表與向量一樣是容器,但列表的實作是基於雙重的 鍊錶與向量的陣列實作相比。列表一般不包含 列表中的元素分佈在連續的位置 記憶。列表在其中的任何地方都提供相同的恆定時間操作,這是主要的 使用清單的特點。另一方面,集合是包含唯一值的容器 某種類型並且所有元素都按升序排序。這兩個容器是 不同,但是有多種方法可以將列表轉換為集合。我們討論方法 詳情如下。
最簡單、最幼稚的方法是定義兩個不同的容器;清單類型之一 另一個是set類型,將清單的每個元素複製到集合中。
list<int> myList; set<int> mySet; for ( int const &val: myList ) { mySet.insert(val); }
#include <iostream> #include <set> #include <list> using namespace std; int main(){ //initializing the list list<int> myList = { 10, 30, 65, 98, 76, 44, 32, 73, 81, 29 }; set<int> mySet; cout<< "The list contents are:" << endl; //displaying the list contents for ( int const &val: myList ) { cout << val << ' '; } //copying the elements of the list for ( int const &val: myList ) { mySet.insert(val); } cout << "\nThe set contents are:" << endl; for ( int const &val: mySet ) { cout << val << ' '; } return 0; }
The list contents are: 10 30 65 98 76 44 32 73 81 29 The set contents are: 10 29 30 32 44 65 73 76 81 98
列表的開始和結束指標必須作為建構函式的參數提供 建構集合時使用範圍構造函數。
list<int> myList; set<int> mySet(begin(myList), end(myList));
在清單中取得輸入。
建立集合時,將清單的開始和結束指標傳遞給集合的範圍建構函數。
顯示集合的內容。
#include <iostream> #include <set> #include <list> using namespace std; int main(){ //initializing the list list<int> myList = { 30, 70, 56, 89, 67, 44, 23, 37, 18, 92 }; //using the range constructor set<int> mySet(begin(myList), end(myList)); cout<< "The list contents are:" << endl; //displaying the list contents for ( int const &val: myList ) { cout << val << ' '; } cout << "\nThe set contents are:" << endl; for ( int const &val: mySet ) { cout << val << ' '; } return 0; }
The list contents are: 30 70 56 89 67 44 23 37 18 92 The set contents are: 18 23 30 37 44 56 67 70 89 92
C 中的複製函數允許將資料從一個容器複製到另一個容器。要使用 複製函數,列表的開始和結束指標必須作為參數傳遞 到函數以及指向集合的指標和集合內的集合的開頭 插入器功能。
list<int> myList; set<int> mySet; copy(begin(myList), end(myList), inserter(mySet, begin(mySet)));
在清單中取得輸入。
定義一個新集合。
將清單的開始和結束指標以及插入器函數中的集合和集合開頭的指標作為參數傳遞給複製函數。
顯示集合的內容。
#include <iostream> #include <set> #include <list> using namespace std; int main(){ //initializing the list list<int> myList = { 33, 74, 52, 84, 65, 47, 28, 39, 13, 96 }; set<int> mySet; //using the copy function copy(begin(myList), end(myList), inserter(mySet, begin(mySet))); cout<< "The list contents are:" << endl; //displaying the list contents for ( int const &val: myList ) { cout << val << ' '; } cout << "\nThe set contents are:" << endl; for ( int const &val: mySet ) { cout << val << ' '; } return 0; }
The list contents are: 33 74 52 84 65 47 28 39 13 96 The set contents are: 13 28 33 39 47 52 65 74 84 96
當我們使用集合時,我們無法在集合中新增或儲存重複的元素,但是 允許重複的元素儲存在清單或類似陣列的資料結構中。有 在某些情況下,首選使用集合而不是清單。這些轉換 我們之前見過的技術對此確實很有幫助。
以上是C++程式將列表轉換為集合的詳細內容。更多資訊請關注PHP中文網其他相關文章!