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

c++中string和vector的詳細介紹

 更新時間:2022年09月21日 14:23:50   作者:米蘭的小紅黑  
這篇文章主要介紹了c++中string和vector的詳細介紹,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下

知識點1【STL的概述】

STL(Standard Template Library,標準模板庫)
STL的三大組件:容器(container)、算法(algorithm)、迭代器(iterator)。
算法操作數(shù)據(jù),容器存儲數(shù)據(jù),迭代器是算法操作容器的橋梁,迭代器和容器一一對應。

STL六大組件:

容器 算法 迭代器 仿函數(shù) 適配器 空間配置器
容器:存放數(shù)據(jù)
算法:操作數(shù)據(jù)
迭代器:容器和算法的橋梁
仿函數(shù):為算法提供更多的策略
適配器:為算法提供更多的參數(shù)接口
空間配置器:管理容器和算法的空間

算法的分類:

質(zhì)變算法:是指運算過程中會改變區(qū)間元素的內(nèi)容。例如拷貝,替換,刪除等。
非質(zhì)變算法:是指運算過程中不會區(qū)間的元素內(nèi)容,例如查找、計數(shù)、遍歷、尋找極值。

迭代器的分類:

知識點2【迭代器的案例】

案例:容器vector

#include <iostream>
#include <vector>
#include<algorithm>

void myPrintInt(int num);
using namespace std;

void test01(){

    //單端動態(tài)數(shù)組vector類模板
    vector<int> arr(0);
    //push_back()尾部插入數(shù)據(jù)
    arr.push_back(100);
    arr.push_back(200);
    arr.push_back(300);
    arr.push_back(400);

    //訪問數(shù)據(jù)
    //定義一個迭代器存儲arr的起始迭代器
    vector<int>::iterator beginIt = arr.begin();
    //定義一個迭代器存儲arr的結(jié)束迭代器
    vector<int>::iterator endIt = arr.end();

    //for循環(huán)遍歷1
    for(vector<int>::iterator i = beginIt; i != endIt; i++){
        //對迭代器取* 代表的是 容器的元素
        //*biginIt
        cout << *i << " ";
    }
    cout << endl;
    //for循環(huán)遍歷2(推薦)
    for(vector<int>::iterator beginIt = arr.begin(); beginIt != arr.end();beginIt++){
        cout << *beginIt << " ";
    }
    cout << endl;

    //STL提供的算法來遍歷容器(包含算法頭文件algorithm)
    //for_each從容器的起始--->結(jié)束,逐個元素取出
    //myPrintInt容器數(shù)據(jù)的打印方式
    for_each(arr.begin(),arr.end(),myPrintInt);

}

void myPrintInt(int num){
    cout << num << " ";
}

int main(int argc, char *argv[])
{
    test01();
    return 0;
}

運行結(jié)果:

案例2:容器存放自定義數(shù)據(jù)類型

#include <iostream>
#include <vector>
#include<algorithm>
#include <string.h>

using namespace std;

class Person{
    friend void myPrintInt1(Person &ob);
private:
    string name;
    int age;
public:
    Person(string name,int age){
        this->name = name;
        this->age = age;
    }
};

void myPrintInt1(Person &ob){
    cout << ob.age << " " << ob.name << endl;
}

void test02(){
    vector<Person> arr;
    Person p1("tom",15);
    arr.push_back(p1);
    arr.push_back(Person("davi",16));
    arr.push_back(Person("mary",17));
    arr.push_back(Person("peter",18));
    for_each(arr.begin(),arr.end(),myPrintInt1);
}


int main(int argc, char *argv[])
{
    test02();
    return 0;
}

運行結(jié)果:

案例3:容器嵌套容器

void test03(){
    vector<int> v1;
    vector<int> v2;
    vector<int> v3;
    v1.push_back(10);
    v1.push_back(20);
    v1.push_back(30);
    v1.push_back(40);

    v2.push_back(100);
    v2.push_back(200);
    v2.push_back(300);
    v2.push_back(400);

    v3.push_back(1000);
    v3.push_back(2000);
    v3.push_back(3000);
    v3.push_back(4000);

    vector< vector<int>> v4;
    v4.push_back(v1);
    v4.push_back(v2);
    v4.push_back(v3);

    for(vector<vector<int>>::iterator it = v4.begin(); it != v4.end(); it++){
        for(vector<int>::iterator mit = (*it).begin(); mit != (*it).end();mit++){
            cout << (*mit) << " ";
        }
        cout << endl;
    }

}

運行結(jié)果:

知識點3【string類】

1、案例:string的構(gòu)造和賦值

#include <iostream>
#include <string.h>

using namespace std;
/*
3.1.2.1 string 構(gòu)造函數(shù)
string();//創(chuàng)建一個空的字符串 例如: string str;
string(const string& str);//使用一個 string 對象初始化另一個 string 對象
string(const char* s);//使用字符串 s 初始化
string(int n, char c);//使用 n 個字符 c 初始化
3.1.2.2 string 基本賦值操作
string& operator=(const char* s);//char*類型字符串 賦值給當前的字符串
string& operator=(const string &s);//把字符串 s 賦給當前的字符串
string& operator=(char c);//字符賦值給當前的字符串
string& assign(const char *s);//把字符串 s 賦給當前的字符串
string& assign(const char *s, int n);//把字符串 s 的前 n 個字符賦給當前的字符串
string& assign(const string &s);//把字符串 s 賦給當前字符串
string& assign(int n, char c);//用 n 個字符 c 賦給當前字符串
string& assign(const string &s, int start, int n);//將 s 從 start 開始 n 個 字符賦值給字符串
*/

void test01(){
    //string(const char* s);//使用字符串s初始化
    string str1 = "hello";
    cout << str1 << endl;

    //string(int n, char c);//使用n個字符c初始化
    string str2(10,'H');
    cout<<str2<<endl;//"HHHHHHHHHH"
}
int main(int argc, char *argv[])
{
    test01();
    return 0;
}

到此這篇關于c++中string和vector的詳細介紹的文章就介紹到這了,更多相關c++ string和vector內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++的友元和內(nèi)部類你了解嗎

    C++的友元和內(nèi)部類你了解嗎

    這篇文章主要為大家介紹了C++的友元和內(nèi)部類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++ Qt實現(xiàn)瀏覽器網(wǎng)頁內(nèi)嵌的音視頻播放器

    C++ Qt實現(xiàn)瀏覽器網(wǎng)頁內(nèi)嵌的音視頻播放器

    這篇文章主要為大家詳細介紹了如何利用C++ Qt實現(xiàn)瀏覽器網(wǎng)頁內(nèi)嵌的音視頻播放器,并支持軟硬解碼,支持音頻,支持錄像截圖,支持多路播放等,感興趣的可以了解下
    2024-01-01
  • C++中的內(nèi)存對齊實例詳解

    C++中的內(nèi)存對齊實例詳解

    這篇文章主要介紹了C++中的內(nèi)存對齊實例詳解的相關資料,這里不僅提供實現(xiàn)方法及代碼還提供了手工制作圖,來幫助到大家理解這部分知識,需要的朋友可以參考下
    2017-07-07
  • C語言實現(xiàn)靜態(tài)版通訊錄的示例代碼

    C語言實現(xiàn)靜態(tài)版通訊錄的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)一個簡單的靜態(tài)版通訊錄,文中的示例代碼講解詳細,對我們學習C語言有一定幫助,需要的可以參考一下
    2022-08-08
  • 純C語言:分治快速排序源碼分享

    純C語言:分治快速排序源碼分享

    這篇文章主要介紹了分治快速排序源碼,有需要的朋友可以參考一下
    2014-01-01
  • C語言隊列和應用詳情

    C語言隊列和應用詳情

    這篇文章主要介紹了C語言隊列和應用詳情,文章將讓大家掌握掌握隊列的原理和作用、掌握隊列的寫法、掌握隊列在產(chǎn)品中的應用,需要的朋友可以參考一下
    2022-03-03
  • C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    在C語言中,單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)類型都是用來儲存實數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。
    2017-10-10
  • C/C++ 中sizeof(''a'')對比詳細介紹

    C/C++ 中sizeof(''a'')對比詳細介紹

    這篇文章主要介紹了C/C++ 中sizeof('a')的值對比詳細介紹的相關資料,需要的朋友可以參考下
    2017-02-02
  • 使用MySQL編程實現(xiàn)C語言功能強大化步驟示例

    使用MySQL編程實現(xiàn)C語言功能強大化步驟示例

    這篇文章主要為大家介紹了使用MySQL編程實現(xiàn)C語言功能強大化步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • C語言數(shù)組和指針,內(nèi)存之間的關系

    C語言數(shù)組和指針,內(nèi)存之間的關系

    這篇文章主要介紹了C語言數(shù)組和指針,內(nèi)存之間的關系,首先論證一維數(shù)組和一級指針之前的關系,我們常常使用一級指針指針的方式訪問一維數(shù)組,只有對內(nèi)存的理解到位才能理解它們直接的關系。需要的小伙伴可以參考一下
    2022-02-02

最新評論

信丰县| 新巴尔虎左旗| 平泉县| 聊城市| 嘉义市| 武夷山市| 杭州市| 杭州市| 昌乐县| 建德市| 太湖县| 南通市| 高碑店市| 中超| 呈贡县| 岐山县| 钟祥市| 冷水江市| 宁武县| 周宁县| 中阳县| 仁怀市| 留坝县| 弥渡县| 凤台县| 涞水县| 徐闻县| 上饶市| 安达市| 平南县| 颍上县| 航空| 金川县| 塘沽区| 龙口市| 抚松县| 陆河县| 新巴尔虎右旗| 木里| 新田县| 和平区|