【vc】【STL源碼】vector,deque與sort的用法比較及入門

來源:互聯網
上載者:User
#include <stdio.h> 
// sort的定義 
#include <algorithm> 
// vector的定義 
#include <vector> 
// deque的定義 
#include <deque> 
// 同樣,引入std命名空間 
using namespace std; 
// 用數組儲存 
int friends[1000]; 
// 用vector儲存 
vector<int> vtFriends; 
// 用deque儲存 
deque<int> dqFriends; 

int main() 
...{ 
int T; 
scanf("%d", &T); 
int iCase; 
for (iCase = 1; iCase <= T; iCase++) 
...{ 
// 每次要將vector和deque請空 
vtFriends.clear(); 
dqFriends.clear(); 
printf("Scenario #%d: ", iCase); 
int n, f, tn; 
scanf("%d%d", &n, &f); 
// 由於後面要找三次,所以先把n的值儲存下來 
tn = n; 
int i; 
for (i = 0; i < f; i++) 
...{ 
// 儲存到數組 
scanf("%d", &friends[i]); 
// 儲存到vector 
vtFriends.push_back(friends[i]); 
// 儲存到deque 
dqFriends.push_back(friends[i]); 

// 排序,如果不給第三個參數,預設是按升序排 
// sort實現的是快速排序,它是不穩定排序, 
// 需要穩定排序時,用stable_sort,用法與sort完全一樣 
// 對數組進行排序 
sort(friends, friends + f); 
// 對vector進行排序 
sort(vtFriends.begin(), vtFriends.end()); 
// 對deque進行排序 
sort(dqFriends.begin(), dqFriends.end()); 
// 在數組裡尋找 
for (i = f - 1; i >= 0; i--) 
...{ 
n -= friends[i]; 
if (n <= 0) 
break; 

// 在vector裡尋找 
// 先恢複n的值 
n = tn; 
for (i = f - 1; i >= 0; i--) 
...{ 
n -= vtFriends.at(i); 
if (n <= 0) 
break; 

// 在deque裡尋找 
// 先恢複n的值 
n = tn; 
for (i = f - 1; i >= 0; i--) 
...{ 
// deque的at方法效率比vector低, 
// 因為deque的元素在記憶體上不完全是連續的 
n -= dqFriends.at(i); 
if (n <= 0) 
break; 

if (i < 0) 
puts("impossible"); 
else 
printf("%d ", f - i); 
puts(""); 

return 0; 

使用的我們學院一個牛人寫的一篇東西哈,這裡介紹vector,deque和sort的用法,這些都是STL的內容,給你一個網站吧,http://www.stlchina.org/;
不過一般好像都不提倡一開始就在程式中使用STL,那些演算法都自己寫寫最好,然後等學會了再用也會理解得更深入的! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.