C++筆記— 排序函式sort() 和vector容器

LJFjy_fighting發表於2020-10-02

來源:菜鳥教程(侵刪)

一、排序函式sort()的排序(涉及到vector容器)

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    vector<int>obj;
 
    obj.push_back(1);
    obj.push_back(3);
    obj.push_back(0);
 
    sort(obj.begin(),obj.end());//從小到大
 
    cout<<"從小到大:"<<endl;
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";  
    } 
 
    cout<<"\n"<<endl;
 
    cout<<"從大到小:"<<endl;
    reverse(obj.begin(),obj.end());//從大到小 
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";
    }
    return 0;
}

輸出結果為:

從小到大:
0,1,3,

從大到小:
3,1,0,

1. 注意:
sort 需要標頭檔案 #include <algorithm>

2. 如果想 sort 來降序,可重寫 sort

bool compare(int a,int b) 
{ 
    return a< b; //升序排列,如果改為return a>b,則為降序 
} 
int a[20]={2,4,1,23,5,76,0,43,24,65},i; 
for(i=0;i<20;i++) 
    cout<< a[i]<< endl; 
sort(a,a+20,compare);

vector容器物件:

陣列內元素物件的訪問:

1、直接陣列訪問
2、迭代器訪問


#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    //順序訪問
    vector<int>obj;
    for(int i=0;i<10;i++)
    {
        obj.push_back(i);   
    } 
 
    cout<<"直接利用陣列:"; 
    for(int i=0;i<10;i++)//方法一 
    {
        cout<<obj[i]<<" ";
    }
 
    cout<<endl; 
    cout<<"利用迭代器:" ;
    //方法二,使用迭代器將容器中資料輸出 
    vector<int>::iterator it;//宣告一個迭代器,來訪問vector容器,作用:遍歷或者指向vector容器的元素 
    for(it=obj.begin();it!=obj.end();it++)
    {
        cout<<*it<<" ";
    }
    return 0;
}

輸出結果為:

直接利用陣列:0 1 2 3 4 5 6 7 8 9
利用迭代器:0 1 2 3 4 5 6 7 8 9

二維陣列的兩種定義:

方法一:

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    int N=5, M=6; 
     //定義二維動態陣列大小5行 
    for(int i =0; i< obj.size(); i++)//動態二維陣列為5行6列,值全為0 
    { 
        obj[i].resize(M); 
    } 
 
    for(int i=0; i< obj.size(); i++)//輸出二維動態陣列 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

方法二:

#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int N=5, M=6; 
    vector<vector<int> > obj(N, vector<int>(M)); //定義二維動態陣列5行6列 
 
    for(int i=0; i< obj.size(); i++)//輸出二維動態陣列 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

相關文章