?? chapter9-40.cpp
字號(hào):
//文件名:CHAPTER9-40.cpp
#pragma warning(disable: 4786)
#include <set>
#include <iostream>
int main()
{
//采用默認(rèn)構(gòu)造器構(gòu)造c1
std::multiset<int> c1 ;
int ai[] = {0, 0, 1, 1, 2, 2, 3, 4} ;
//創(chuàng)建multset變量c2,并且使用迭代器初始化其范圍
std::multiset<int> c2(ai, ai + 8) ;
//采用拷貝構(gòu)造函數(shù)方式
std::multiset<int> c3(c2) ;
std::multiset<int>::iterator Iter ;
std::multiset<int>::reverse_iterator RevIter ;
//采用empty判斷multiset變量c1是否為空
if(c1.empty())
{ std::cout << "multiset c1 is empty" << std::endl ; }
else
{ std::cout << "multiset c1 is not empty" << std::endl ; }
//采用begin, end進(jìn)行訪問(wèn)頭和尾訪問(wèn)
std::cout << "c2 (using begin, end) = " ;
for(Iter = c2.begin(); Iter != c2.end(); Iter++)
{ std::cout << *Iter << " " ; }
std::cout << std::endl ;
//采用rbegin, rend進(jìn)行訪問(wèn)頭和尾訪問(wèn)
std::cout << "c2 (using rbegin, rend) = " ;
for(RevIter = c2.rbegin(); RevIter != c2.rend(); RevIter++)
{ std::cout << *RevIter << " " ; }
std::cout << std::endl ;
//采用函數(shù)insert插入c1元素
c1.insert(ai, ai+4) ;
c1.insert(1) ;
//采用count進(jìn)行元素出現(xiàn)統(tǒng)計(jì)
std::cout << "Number elements in c1 that match 1 = " << c1.count(1) << std::endl ;
//采用find進(jìn)行元素查找
std::multiset<int>::const_iterator constIter = c1.find(3) ;
if(constIter != c1.end())
{std::cout << "c1 contains element 3, *constIter = " << *constIter << std::endl ;}
//采用max_size返回c1最大元素?cái)?shù)量
std::cout << "c1.max_size() = " << c1.max_size() << std::endl ;
//采用size返回c1元素?cái)?shù)量
std::cout << "c1.size() = " << c1.size() << std::endl ;
//采用swap進(jìn)行c1和c2的元素交換
c1.insert(4) ;
c2.swap(c1) ;
std::cout << "The last element of c2 = " << *(c2.rbegin())<< std::endl ;
//采用clear進(jìn)行c1對(duì)象清除
c1.clear() ;
std::cout << "After calling c1.clear(), c1.size() = " << c1.size() << std::endl ;
//采用get_allocator返回內(nèi)存分配器
std::multiset<int>::allocator_type a1 = c1.get_allocator() ;
//采用key_compare進(jìn)行鍵值比較
std::multiset<int>::key_compare kc = c2.key_comp() ;
bool result = kc(2, 3) ;
if(result == true)
{std::cout << "kc is function object used by c2. kc(2,3) = true" << std::endl ; }
else
{std::cout << "kc is function object used by c2. kc(2,3) = false" << std::endl ; }
//采用value_comp進(jìn)行實(shí)值比較
std::multiset<int>::value_compare vc = c2.value_comp() ;
result = vc(10, 4) ;
if(result == true)
{std::cout << "vc is function object used by c2. vc(10,4) = true" << std::endl ; }
else
{ std::cout << "vc is function object used by c2. vc(10,4) = false" << std::endl ; }
//采用upper_bound返回上迭代器
std::cout << "* (c2.upper_bound(3)) = " << *(c2.upper_bound(3)) << std::endl ;
//采用lower_bound返回低迭代器
std::cout << "* (c2.lower_bound(3)) = "<< *(c2.lower_bound(3)) << std::endl ;
//采用equal_range返回當(dāng)前元素的上下迭代器
std::pair<std::multiset<int>::const_iterator, std::multiset<int>::const_iterator> pr1 = c2.equal_range(3) ;
std::cout << "*(pr1.first) = " << *(pr1.first) << "\t"
<< "*(pr1.second) = " << *(pr1.second) << std::endl ;
//采用erase進(jìn)行元素刪除
if(c3.erase(1) != 0)
{ std::cout << "c3 does not contain 1 any more" << std::endl ; }
else
{ std::cout << "No elements in c3 match key 1" << std::endl ; }
if((c2.erase(c2.begin())) != c2.end())
{ std::cout << "c2 does not contain 0 any more" << std::endl ; }
else
{ std::cout << "No elements in c2 match key 0" << std::endl ; }
c3.erase(c3.begin(), c3.end()) ;
std::cout << "after c3.erase(c3.begin(), c3.end()), c3.size() = "
<< c3.size() << std::endl ;
return 0 ;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -