【vector】练习

本文介绍了如何使用C++中的向量实现二维数组,并演示了初始化、填充、打印二维向量的方法。通过实例展示了向量的基本操作,如赋值、插入、删除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维数组应用

 #include <iostram>

 #include <cvector>

 using namespace std;


 void initV2D(int m,int n,< vector > &myV2D)//address

 {

     myV2D.resize(m);

     for (int i=0;i<myV2D.length();i++) {

             myV2D[i].resize(n);

             for (int j=0;j<myV2D[i].length();j++){

                      cin>>myV2D[i][j] ;
                      //初始化每行的元素

                 }

             }

         }



void V2DPrint(int m,int n,< vector > &myV2D) {

     for (int i=0;i<myV2D.length();i++) {

         for (int j=0;j {

             cout<<myV2D[i][j];

         }

    cout<<endl;

     }

 }



 int main(){

     vector< vector   > V2D;

     initV2D(3,3,V2D);//经过这一步之后,你直接把v2d当做普通二维数组去用好了,当然作参数时需要注意一下

     V2DPrint(3,3,V2D);

     cin.get();

     return 0;

 }

基础

#include<iostream>

#include<iomanip>

#include<vector>

using namespace std;                                
//vector 也是在std命名域中命名的



void initialize_matrix(int m,int n,vector >&vec2D);

void display_matrix(int m,int n,vector >&vec2D);

class a

{

    private:

        int b;

    public:



    void get_number()

    {

        cout<<"Please initialize the number:";

        cin>>b;

    }

};



int main()

{

    //定义

    int myNum[100];//C语言风格

    vectorvecmyNum(100);                         //这里如果定义了容器大小,会赋予初始值0?  答案:是的!所以在外部赋值之前要清空。类似于一个容器变成了两个副本。

    //定义一个存储class类型的容器

    vectorvecClass;                               //要不要大小?????????

    //定义时初始化

    vectorvecmyNumber(100,1);                   //定义的时候赋值

    //定义一个新的,由别人来赋值

    vectorvecmyNew;

    vecmyNew=vecmyNumber;                            //由其他容器来进行赋值的这个过程是整个覆盖,而不会创建两个副本。输出的时候就不会有原始值0。



    vecmyNum.clear();                                //清空后赋值!很重要!!!!!!







    //添加数值

    for(int i=0;i<100;i++)

    {

        vecmyNum.push_back(i);                      //vec.push_back(value)

    }







    //输出容器内的数值

    for(int i=0;i<vecmyNum.length();i++){

        cout<<setw(3)<<vecmyNum[i];                 //下标方法进行输出

        if((i+1)==0&&i!=0){cout<<endl;}

    }

    cout<<endl;

    //输出一开始就赋值了得容器

    for(int i=0;i<vecmyNumber.length();i++) {

        cout<<setw(3)<<vecmyNumber[i];

        if((i+1)==0&&i!=0){cout<<endl;}

    }

    cout<<endl;

    //输出一个由别人容器赋值的容器

    for(int i=0;i<vecmyNew.length();i++){

        cout<<setw(3)<<vecmyNew[i];

        if((i+1)==0&&i!=0){cout<<endl;}

    }







    //彻底清除

    vecmyNumber.clear();

    //部分清除

    vector::iterator it=vecmyNum.begin();                           //v.begin()返回的均为迭代器。可进行加减运算。

    vecmyNum.erase(it+20);                                               //erase(vector内的迭代器,也是一种指针,但是在vector头文件中定义的)

    //然后一个位置的补充

    vecmyNum.insert(it+20,8);                                            //v.insert(迭代器,数值)

    //一个局部的清除

    vecmyNum.erase(it+30,it+40);

    //测试清楚效果

    //彻底被清除后

    for(int i=0;i<vecmyNumber.length();i++) {

        cout<<setw(3)<<vecmyNumber[i];

        if((i+1)==0&&i!=0){cout<<endl;}

    }                                                                    //v.clear()的效果是将整个容器清空。

    cout<<endl;

    //局部清除后

    for(int i=0;i<vecmyNum.length();i++) {

        cout<<setw(3)<<vecmyNum[i];

        if((i+1)==0&&i!=0){cout<<endl;}

    }

    cout<<endl<<endl;

    vecmyNum.clear();                                                     //局部删除以后,位置是空的而不是0,后面的元素会向前填补。









    //重新定义大小;测试若超量填补的后果        并没有什么后果。

    //vecmyNum.resize(400);

    for(int i=0;i<400;i++) {

        vecmyNum.push_back(i);

    }

    vecmyNum.pop_back();

    for(int i=0;i<400;i++)                                                  //相当于,it++!=v.end();
 {

        cout<<setw(3)<<vecmyNum[i];

        if((i+1)==0&&i!=0){cout<<endl;}

    }

    cout<<endl<<endl;

    cout<<vecmyNum.front();







    //二维数组的使用

    //定义

    vector >arr(10,vector(0));                             //如果没有后面vector(0)有什么用?

    //动态二维数组的定义

    int m,n;

    vector > ivec;                        //m*n的二维vector,所有元素为0

    cout<<"dimension:"<<endl;

    cin>>m>>n;

    initialize_matrix(m,n,ivec);

    display_matrix(m,n,ivec);

    cin.get();

}



void initialize_matrix(int m,int n,vector >&vec2D)

{

    vec2D.resize(m);

    for(int i=0;i

    {

        vec2D[i].resize(n);

        for(int j=0;j

        {

            cin>>vec2D[i][j];

        }

    }

}

void display_matrix(int m,int n,vector >&vec2D)

{

    for(int i=0;i

    {

        for(int j=0;j

        {

            cout<<setw(3)<<vec2D[i][j];

        }

        cout<<endl;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值