C++笔记(五)~vector
【摘要】 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)