最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++STL之vector模板類詳解

 更新時間:2022年03月14日 11:18:17   作者:RuiH.AI  
這篇文章主要為大家詳細介紹了C++vector模板類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

前言

STL標準模板庫是C++中非常有用的功能庫。本篇從vector容器開始學習STL。

vector模板類

創(chuàng)建vector對象,遍歷元素

vector模板類在頭文件vector中,用于存儲數(shù)組,并采用動態(tài)內存分配。

創(chuàng)建一個vector對象并初始化長度,通過[]運算符訪問元素:

#include <vector>
using namespace std;
int main(){
    vector<int> vec(5); // vec length 5
    vec[0] = 1;
    return 1;
}

可以采用for循環(huán)遍歷vector元素,C++11提供了采用范圍for循環(huán)來遍歷STL容器:

for(int i=0; i < 5; i++) // general
	cout << vec[i] << '\n';
// equal to
for(int i: vec) // range
	cout << i << '\n';

迭代器

迭代器是STL中,類似指針的類,指向容器中的某個元素。

創(chuàng)建一個正向迭代器:

vector<int>::iterator t;
t = vec.begin();
*t = 1; // vec[0] = 1
t++; // vec[1]

迭代器就像一個指針,具有*、++運算符。

容器的基本方法

STL容器都提供了一些基本方法,包括:

  • size():返回容器中的元素數(shù)目
  • swap():交換兩個容器的內容
  • begin():返回一個指向容器中第一個元素的迭代器
  • end():返回一個指向容器末尾元素后一個元素的迭代器

此外,vector還包含一些部分容器擁有的方法:

  • push_back():在容器末尾添加一個元素
  • pop_back():刪除容器末尾的元素
  • erase():給定一個迭代器,刪除該迭代器指向的元素;給定兩個迭代器it1, it2,刪除容器內區(qū)間[it1, it2)的元素
  • insert():給定一個迭代器和一個元素,在該迭代器指向處插入該元素;給定三個迭代器it1, it2, it3,將容器區(qū)間[it2, it3)的元素插入到it1處。\
  • clear():清除容器中所有元素

此外還有一些有用的方法,以后碰上再總結。

#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

int main(){
    vector<int> vec(5);
    vector<int> copyvec(vec);
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vector<int>::iterator t;
    t = vec.begin();
    *t = 1;
    for(int i: vec)
        cout << i <<'\n';
    cout << '\n';
    cout << vec.size() << endl;
    cout << '\n';
    vec.swap(copyvec);
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vec.insert(vec.end(), copyvec.begin(), copyvec.end());
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vec.erase(vec.begin(), (vec.begin()+5));
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vec.push_back(2);
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vec.pop_back();
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    vec.clear();
    std::cout << vec.size() <<endl;
    cout << '\n';
    return 1;
}

STL函數(shù),sort

STL通過泛型編程的思想定義了很多STL函數(shù),用于各種容器類的通用操作,如搜索,排序等。

頭文件algorithm提供了這些STL函數(shù),以sort排序為例,sort函數(shù)參數(shù)為前后兩個迭代器以及一個比較方法:
template <typename Iter> void sort (Iter first, Iter last, Compare comp);比較區(qū)間為[first, last),comp表示函數(shù)指針:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
    vector<int> vec;
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(1);
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    sort(vec.begin(), vec.end());
    for(int i: vec)
        cout << i <<'\n';
    cout <<'\n';
    return 1;
}
/*
2 \n 4 \n 1
1 \n 2 \n 4
*/

如果不提供比較方法,則默認使用容器元素定義的<進行比較;如果提供Compare函數(shù)指針,則根據(jù)返回的true, false進行排序,true表示Compare參數(shù)順序正確:

bool smaller(const int& a, const int& b){
    if(a >= b)
        return true;
    return false;
}
sort(vec.begin(), vec.end(), smaller);
// 4 2 1

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!       

相關文章

  • C語言中getchar()的返回類型為什么是int詳解

    C語言中getchar()的返回類型為什么是int詳解

    這篇文章主要給大家介紹了關于C語言中getchar()的返回類型為什么是int的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 詳解C++ sort函數(shù)的cmp參數(shù)

    詳解C++ sort函數(shù)的cmp參數(shù)

    這篇文章主要介紹了C++ sort函數(shù)的cmp參數(shù),以升降排序個結構體的排序展開的話題,感興趣的小伙伴可以參考下面文章內容
    2021-09-09
  • C語言入門之查找子串問題

    C語言入門之查找子串問題

    這篇文章主要介紹了C語言入門之查找子串問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++中關于getchar()的使用方法

    C++中關于getchar()的使用方法

    這篇文章主要介紹了C++中關于getchar()的使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言中的常量詳解

    C語言中的常量詳解

    本文主要講解C語言 常量,這里整理了 C語言常量的基礎知識,并附代碼示例和示例詳細講解,希望能幫助開始學習C 語言的同學
    2021-09-09
  • 如何正確的使用語句塊

    如何正確的使用語句塊

    本篇文章是對正確使用語句塊進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 基于c++ ege圖形庫實現(xiàn)五子棋游戲

    基于c++ ege圖形庫實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了基于c++ ege圖形庫實現(xiàn)五子棋游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C語言實現(xiàn)簡易掃雷游戲

    C語言實現(xiàn)簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • OpenGL實現(xiàn)鼠標移動方塊

    OpenGL實現(xiàn)鼠標移動方塊

    這篇文章主要為大家詳細介紹了OpenGL實現(xiàn)鼠標移動方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++并查集親戚(Relations)算法實例

    C++并查集親戚(Relations)算法實例

    這篇文章主要介紹了C++并查集親戚(Relations)算法,實例分析了并查集親戚算法的原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04

最新評論

图木舒克市| 嘉祥县| 万盛区| 油尖旺区| 桑植县| 五常市| 榆中县| 绥中县| 罗源县| 宜宾市| 嘉峪关市| 长治市| 阿拉善右旗| 延川县| 湟源县| 乌拉特中旗| 耒阳市| 洞口县| 六安市| 乐业县| 阳新县| 抚远县| 建湖县| 安溪县| 淳安县| 叶城县| 皋兰县| 无棣县| 沙湾县| 龙门县| 胶州市| 安庆市| 安康市| 延津县| 鸡泽县| 阿克苏市| 武宣县| 咸丰县| 米泉市| 通化县| 德庆县|