1 #include 2 #include 3 #include 4using
namespace
std;56
bool cmp(const pair &a,const pair &b)710
11int
main()
1223
int _size =a.size();
24//
sort(&a[0],&a[_size],cmp);
//第乙個不是&a
25 sort(a.begin(),a.end(),cmp);//
上寫兩個均可排序
判斷存在與否,過去一直用的是count方法。
map插入資料,以上三種用法,雖然都可以實現資料的插入,但是它們是有區別的,當然了第一種和第二種在效果上是完成一樣的,用insert函式插入資料,在資料的插入上涉及到集合的唯一性這個概念,即當map中有這個關鍵字時,insert操作是插入資料不了的,但是用陣列方式就不同了,它可以覆蓋以前該關鍵字對應的值
注意:下面是在2012成都預選賽時想起的問題
map mm;
map ::iterator ptr;
怎樣讓迭代器指向第三個元素
ptr = mm.begin()+2,這樣會編譯錯誤,分兩次自增又太麻煩。
還有就是怎樣直接返回第三個位置的元素
對於第乙個問題,可以advance(ptr,2)
第二個問題實際上是隨機訪問的問題, map不可以的,還是 advance(ptr,2),輸出*ptr
在涉及到容器和演算法的操作中,還有兩個迭代器函式非常有用:
· advance() 按指定的數目增減迭代器。
· distance() 返回到達乙個迭代器所需(遞增)操作的數目。
例如:
list ilist;
list::iterator p =
find(ilist.begin(), ilist.end(), 2);
cout << "before: p == " << *p << endl;
advance(p, 2); // same as p = p + 2;
cout << "after : p == " << *p << endl;
int k = 0;
distance(p, ilist.end(), k);
cout << "k == " << k << endl;
advance()函式接受兩個引數。第二個引數是向前推進的數目。對於前推迭代器,該值必
須為正,而對於雙向迭代器和隨機訪問迭代器,該值可以為負。
使用 distance()函式來返回到達另乙個迭代器所需要的步驟。
注意 distance()函式是迭代的,也就是說,它遞增第三個引數。因此,你必須初始化該引數
。未初始化該引數幾乎注定要失敗。
vector排序問題
要對vector中的自定義型別進行排序,首先需要提供乙個函式bool comp const interval a,const interval b 來定義型別的排序準則 然後呼叫std sort intervals.begin intervals.end comp 寫了幾個小的測試用例也都通過了,但...
Set排序方法
在講解set集合排序的幾種方法之前,我們應該先清楚set集合的幾種型別以及特點,才能有效使用起來。set集合的特點 set不允許包含相同的元素,如果試圖把兩個相同元素加入同乙個集合中,add方法返回false。set判斷兩個物件相同不是使用 運算子,而是根據equals方法。也就是說,只要兩個物件用...
vector與set區別 基礎知識
首先,vector是序列式容器而set是關聯式容器。set包含0個或多個不重複不排序的元素。也就是說set能夠保證它裡面所有的元素都是不重複的。另外對set容器進行插入時可以指定插入位置或者不指定插入位置。如insert v.begin 1 也可以直接用insert 1 還有一點是 set對一些操作...