C++笔记(五)~vector

举报
海轰Pro 发表于 2022/08/26 16:36:36 2022/08/26
【摘要】 vector定义表示对象的集合,其中所有的对象的类型都相同,常被称为容器。注意使用vector需要引入头文件:#include<vector>若vector中的元素是vector,那么在一些编译器中的写法是:vector<vector<T> > (最右边两个>中间需要一个空格)定义和初始化vector对象vector<T> v1 :v1是一个空vector,潜在元素是T类型,执行默认初始化v...

vector定义

表示对象的集合,其中所有的对象的类型都相同,常被称为容器

注意

  • 使用vector需要引入头文件:#include<vector>
  • 若vector中的元素是vector,那么在一些编译器中的写法是:vector<vector<T> > (最右边两个>中间需要一个空格)

定义和初始化vector对象

  • vector<T> v1 :v1是一个空vector,潜在元素是T类型,执行默认初始化
  • vector<T> v2(v1): v2中包含有v1所有元素的副本
  • vector<T> v3=v1: 等价于v3(v1),v3中包含有v1所有元素的副本
  • vector<T> v4(n,val) :v4中包含了n个重复元素,每个元素的值都是val
  • vector<T> v5(n) :v5包含了n个重复地执行了值初始化的对象
  • vector<T> v6{a,b,c,d....} :v6包含了初始值个数的元素,每个元素被赋予相应的初始值 C++11标准
  • vector<T> v7={a,b,c,d....} :等价于v7{a,b,c,d...} C++11标准

示例代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int> v1;
    vector<int> v2(v1);
    vector<int> v3=v1;
    vector<int> v4(3,-1);// 初始化为3个元素 每次都是-1
    vector<int> v5(7);// 初始化7个元素 每个都是int默认初始值0
    vector<string> v6(8);// 初始化8个元素 每个都是string初始值:空
    
    // C++11标准新增初始化方式
    //vector<string> v7{"123"}; 
   // vector<string> v8={"121"};
    return 0;
}


圆括号()与花括号{}在初始化时的区别

vector<string> v1={"fff",""aaa"};//列表初始化 初始化后v1有两个元素"fff"\"aaa"
vector<string> v2=("fff",""aaa");//错误 不可以用圆括号

vector<int> v1(10);// 初始化10个int元素 每个都是int默认初始值0
vector<int> v2{10};// 初始化1个int元素 值是10

vector<int> v3(10,-1);// 初始化10个int元素,每个都是-1
vector<int> v4{10,-1};// 初始化2个元素 一个是10 一个是-1

push_back()

作用

把一个值当成vector对象的尾元素压入(push)vector对象的尾端(back)

示例代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
		// a 初始化为一个空的vector对象
    vector<int> a;
    // 利用循环 向a的尾部依次添加元素
    // 最后a就是:1 2 3 4 5 .... 99 100
    for(int i=1;i<=100;++i){
        a.push_back(i);
    }
    return 0;
}

遍历vector中的元素

#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int> a;
    for(int i=1;i<=10;++i){
        a.push_back(i);
    }
    //方法一:使用索引/下标
    cout<<"使用索引/下标:"<<endl;
    for(int i=0;i<a.size();++i){
        cout<<a[i]<<" ";
    }
    cout<<endl;
    // 方法二:使用引用
    cout<<"使用引用"<<endl;
    for(int &i:a){
        cout<<i<<" ";
    }
    // 注:可以写为 int i:a 这时不会改变原值
    // 若写出int &i:a 此时是可能改变原值的 比如进行 i+=2等操作
    // 当然auto i:a 或 auto &i:a 都可以
    cout<<endl;
    return 0;
}

运行结果

size()

作用

返回vector中元素的个数,注意类型是vector<T>::size_type()

示例代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int> a;
    for(int i=1;i<=10;++i){
        a.push_back(i);
    }
    cout<<"a中元素的个数是:"<<a.size()<<endl;
    return 0;
}

运行结果

empty()

作用

若vector对象为空,返回true,反之返回false

示例代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int> a;
    cout<<"a.empty()="<<a.empty()<<endl;
    for(int i=1;i<=10;++i){
        a.push_back(i);
    }
    cout<<"a.empty()="<<a.empty()<<endl;
    return 0;
}

运行结果

emplace_back()

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。