在集合中插入值
插入可以使用三種不同的插入方法。
- 首先,簡單插入值。此方法返回一對,允許呼叫者檢查插入是否確實發生。
- 其次,通過提示將插入值的位置進行插入。目標是在這種情況下優化插入時間,但知道應該插入值的位置不是常見情況。在這種情況下要小心; 提供提示的方式因編譯器版本而異。
- 最後,你可以通過給出開始和結束指標來插入一系列值。起始的一個將包含在插入中,結尾的一個將被排除。
#include <iostream>
#include <set>
int main ()
{
std::set<int> sut;
std::set<int>::iterator it;
std::pair<std::set<int>::iterator,bool> ret;
// Basic insert
sut.insert(7);
sut.insert(5);
sut.insert(12);
ret = sut.insert(23);
if (ret.second==true)
std::cout << "# 23 has been inserted!" << std::endl;
ret = sut.insert(23); // since it's a set and 23 is already present in it, this insert should fail
if (ret.second==false)
std::cout << "# 23 already present in set!" << std::endl;
// Insert with hint for optimization
it = sut.end();
// This case is optimized for C++11 and above
// For earlier version, point to the element preceding your insertion
sut.insert(it, 30);
// inserting a range of values
std::set<int> sut2;
sut2.insert(20);
sut2.insert(30);
sut2.insert(45);
std::set<int>::iterator itStart = sut2.begin();
std::set<int>::iterator itEnd = sut2.end();
sut.insert (itStart, itEnd); // second iterator is excluded from insertion
std::cout << std::endl << "Set under test contains:" << std::endl;
for (it = sut.begin(); it != sut.end(); ++it)
{
std::cout << *it << std::endl;
}
return 0;
}
輸出將是:
# 23 has been inserted!
# 23 already present in set!
Set under test contains:
5
7
12
20
23
30
45