C++ vector数组

通过清心醉

C++ vector数组

vector数组可以用来存储int,char,和class的实体(比如string就是一个class,当然也可以自定义class)

//#define _CRT_SECURE_NO_WARNINGS 
//定义_CRT_SECURE_NO_WARNINGS 主要考虑strcpy_s /和 strcpy等部分string字符串操作异常,如果考虑向下兼容则使用,否则不建议使用。

#include <iostream>
#include <exception> //异常
#include <thread> //多线程类库
#include <Windows.h> //多线程如果while挂起执行的时候Sleep需要,注意Unix和Windows的参数格式不一样
#include <string> //字符串需要
#include <vector> //vector数组类,类似string
using namespace std;


class Demo {
private:
    __int64 demoid; //注意 int如果超过32的最大长度,需要使用 __int64     
public:
    int setId(__int64 id) {
        this->demoid = id;
        return this->demoid;
    }
    int getId() {
        return this->demoid;
    }
};

int main()
{   
    try {
        //Int Type
        vector<int>obj;//创建一个向量存储容器 int
        for (int i = 0; i < 10; i++) // push_back(elem)在数组最后添加数据 
        {
            obj.push_back(i);
            cout << obj[i] << ",";
        }

        for (int i = 0; i < 5; i++)//去掉数组最后一个数据 
        {
            obj.pop_back(); //删除矢量末尾处的元素
        }

        cout << "\n" << endl;

        for (int i = 0; i < obj.size(); i++)//size()容器中实际数据个数 
        {
            cout << obj[i] << ",";
        }
        cout << "\n";

        //Char StringClass Type
        vector<char> StringObj; //定义char类型数组类
        string str = "Visual Studio"; //需要push的数据为string类库的字符串格式
        for (int i = 0; i < str.length(); i++) {
            StringObj.push_back(str[i]);
        }
        for (int i = 0; i < StringObj.size(); i++) {
            cout << StringObj[i];
        }
        cout << "\n";

        //Char Type
        vector<char> CharObj; //定义char类型数组类
        char char_str[32] = "Visual Studio 2022"; //需要push的数据为char字符串格式
        int str_length_ = strlen(char_str);// (sizeof(char_str) / sizeof(char_str[0])); //这样获取长度是不严谨的,因为定义的时候为char[32],实际使用并且32个,这样后面就会以空占用
        for (int i = 0; i < str_length_; i++) {
            cout << "i=" <<i << "&str=" << char_str[i] << "\n";
        }
        for (int i = 0; i < str_length_; i++) {
            CharObj.push_back(char_str[i]);
        }
        for (int i = 0; i < CharObj.size(); i++) {
            cout << CharObj[i];
        }
        cout << "\n";


        vector<Demo> demo; //数组类,注意这里的<Demo>为类名  demo为vector的实体

        for (int i = 0; i < 10; i++) {
            Demo democlass;
            //democlass.setId(100+1); //初始化,这里主要实现不同的demo类的id都不同,也可以在之后的循环体内进行设置初始值
            demo.push_back(democlass); //将类PUSH到vector数组里

        }
        for (int i = 0; i < demo.size(); i++) { //push_back之后,可以使用.size()方法来获取下标数量
            demo[i].setId(100+i); //循环的时候,进行SET动作
        }
        for (int i = 0; i < demo.size(); i++) { //push_back之后,可以使用.size()方法来获取下标数量
            cout << demo[i].getId() << "\n";
        }

        return true;
    }
    catch (exception e) {
        cout << "Exception \n";
        return false;
    }
}

关于作者

清心醉 administrator

发表评论

如果喜欢作者的文章,您可以打赏给作者:

TRC20(虚拟货币):


ERC20(虚拟货币):


Bitcoin(BTC):