C++ STL 中的 set::insert() 函式
本文將討論 C++ STL 中的 set::insert() 函式,包括其語法、工作原理和返回值。
什麼是 C++ STL 中的 Set?
C++ STL 中的 Set 是一種容器,其元素必須唯一且按一定順序排列。由於元素的值標識元素本身,因此 Set 中的元素必須唯一。一旦將值新增到 Set 容器中,就不能再修改該值,儘管仍然可以刪除或新增其他值。Set 使用二叉搜尋樹實現。
什麼是 set::insert()?
insert() 函式是 C++ STL 中的內建函式,定義在 <set> 標頭檔案中。此函式用於向 Set 容器中插入元素。插入元素後,容器的大小會增加插入元素的數量。由於 Set 包含唯一值,因此 insert() 函式不僅插入元素,還會首先檢查要插入的元素是否已存在於 Set 容器中。此外,在 Set 中,所有元素都按排序後的位置儲存,因此插入的元素將根據其排序後的位置插入。
語法
Set1.insert(const type_t &value); ----(1) Or Set1.insert(iterator position, const type_t &value); -----(2) Or Set1.insert(iterator position_1, iterator position_2); -----(3)
引數
value − 要插入到 Set 容器中的值。
position − 位置提示,函式將從此位置開始搜尋並插入元素到合適的位置。
position_1, position_2 − 指定要插入到 Set 中的範圍的迭代器。position_1 為範圍的起始位置,position_2 為範圍的結束位置。
返回值
根據傳遞給函式的引數,函式返回不同型別的返回值。
僅傳遞 value 時;函式返回指向已插入到 Set 容器中元素的迭代器。
傳遞 position 和 value 時;函式同樣返回指向已插入到 Set 容器中元素的迭代器。
傳遞 position_1 和 position_2 時;函式返回位於從 position_1 開始到 position_2 結束的範圍內的值的集合。
示例
Input: set<int> myset; myset.insert(10); Output: values in the set = 10 Input: set <int> myset = {11, 12, 13, 14}; myset.insert(myset.begin(), 10); Output: values in the set = 10 11 12 13 14
示例
按順序(一個接一個)向 Set 中插入元素
#include <bits/stdc++.h> using namespace std; int main(){ set<int> mySet; mySet.insert(10); mySet.insert(20); mySet.insert(30); mySet.insert(40); mySet.insert(50); cout<<"Elements are: "; for (auto i = mySet.begin(); i != mySet.end(); i++) cout << *i << " "; return 0; }
輸出
如果執行以上程式碼,將生成以下輸出:
Elements are : 10 20 30 40 50
示例
基於位置向 Set 中插入元素
#include <bits/stdc++.h> using namespace std; int main(){ set<int> mySet; auto i = mySet.insert(mySet.begin(), 10); i = mySet.insert(i, 20); i = mySet.insert(i, 40); i = mySet.insert(i, 30); i = mySet.insert(i, 80); i = mySet.insert(mySet.end(), 90); cout<<"Elements are: "; for (auto i = mySet.begin(); i != mySet.end(); i++) cout << *i << " "; return 0; }
輸出
如果執行以上程式碼,將生成以下輸出:
Elements are: 10 20 30 40 80 90