概述
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
//vector的定义和初始化
cout << "n定义和初始化vector:--------->" << endl;
vector<int> v1;//定义一个空的vector,执行默认初始化
vector<int> v2(v1);//定义一个拷贝v1的副本
//指定数量的初始化
vector<string> v3(3, "str");//定义一个初始含有3个“str”字符串的vector
vector<int> v4(10);//定义初始含有10个默认初始化的vector(对于int,默认初始化全为0,对于string,全为空字符串)
//用初始化列表进行初始化,注意是{ }而不是( ),前者用于列表初始化,后者用于提供构造信息,如v3和v4
vector<int> v5{ 1, 2, 3, 4, 5 };//定义一个被自定义初始化的vector
vector<int> v6 ={ 1, 2, 3 };//等价于v5
//使用assign()为vector赋值(注意不是添加,而是覆盖)
v1.assign(v5.begin(), v5.end() - 2);//将v5的开始到倒数第三个元素拷贝给v1
v1.assign(4, 3);//使用4个3为v1赋值
//使用back()获取vector的最后一个元素
cout <<"n使用back()获取vector的最后一个元素:"<< v1.back() << endl;
//使用front()获取vector的第一个元素
cout <<"n使用front()获取vector的第一个元素:"<< v1.front() << endl;
//使用insert()向vector中插入元素(是插入,不是覆盖,也不是替换,元素将后移)
v1.insert(v1.begin(), 5);//在开始位置插入元素5
v1.insert(v1.begin()+1, 3, 5);//在第一号开始插入3个5
int arr[5] = { 1, 2, 3, 4, 5 };
v1.insert(v1.begin(), arr + 1, arr + 3);//将数组b的第1和第2个元素插入到开始位置
//使用push_back()添加元素到vector末尾,vector能高效管理内存,所以在定义时指定大小(v3,v4)是没有必要的。
cout << "n使用push_back()添加元素到vector末尾--------------->" << endl;
int a;
//cin返回为输入流,当输入流为无效(如需要int输入string时,vs测试是直接退出程序,无任何提示)
//或输入文件结束符EOF(windows下为ctrl+z,类unix下为ctrl+d)结束
//while (cin >> a){
// v1.push_back(a);
//}
v1 = { 1, 2, 4, 5, 6, 5 };
//使用empty()判断vector是否为空
cout << "n判断vector是否为空----------------->" << endl;
if (v1.empty()){
cout << "v1 is empty!" << endl;
}
else{
cout << "v1 is not empty!" << endl;
}
//使用size()返回vector元素个数
cout << "nnumber of v1 is:" << v1.size() << endl;
//使用resize()来重新定义vector大小
v1.resize(20);//原来元素多则删,少则补随机值
v1.resize(20, 2);//原来元素多则删,少则补2
//使用下标运算符[ ]访问指定位置的元素(返回元素的引用,故只要元素不是常量,就可以用下标来对元素进行赋值操作,
//但下标不能用于添加新元素)
cout << "n使用下标[0]访问指定位置的元素--------------->" << endl;
cout << v1[0] << endl;
//使用=拷贝替换,也可以理解为赋值,整个vector全部替换,包括size等信息
v2 = v5;
cout << "n使用=拷贝替换后的v2------------->" << endl;
for (int i = 0; i < v2.size(); i++){
cout << v2[i] << " ";
}
//使用列表{ }来拷贝替换
v2 = { 2, 3, 4 };
cout << "n使用列表{ }来拷贝替换后的v2------------->" << endl;
for (int i = 0; i < v2.size(); i++){
cout << v2[i] << " ";
}
//使用==判断两vector相等,当且仅当对应元素都相等时为真
//!=同理
cout << "n使用==判断两vector相等-------------->" << endl;
if (v1 == v2){
cout << "v1 = v2!" << endl;
}
else{
cout << "v1 != v2!" << endl;
}
//使用关系运算符(>,<,>=,<=)判断两个vector大小
//按字典顺序进行比较
cout << "n使用关系运算符判断两个vector大小---------->" << endl;
if (v1 > v2){
cout << "v1 > v2" << endl;
}
//使用范围for来访问vector中的元素
cout << "n使用范围for来访问vector中的元素----------->" << endl;
for (auto &i : v2){ //i为元素的引用,这样可以通过i来修改v2的元素
i *= i;
}
for (auto i : v2){ //只读,不能修改
cout << i << " ";
}
//使用迭代器(与指针类似)
//使用begin()返回表示第一个元素的迭代器
cout << "n使用begin()返回表示第一个元素的迭代器----------->" << endl;
auto b = v1.begin();
cout << *b << endl;
//使用end()返回指向尾元素之后的位置的迭代器(尾后迭代器)
//当vector为空时,begin()和end()都返回尾后迭代器
cout << "n使用end()返回指向尾元素之后的位置的迭代器----------->" << endl;
auto e = v1.end();
cout << *(e-1) << endl;//访问*e将会出错
//迭代器运算
cout <<"返回迭代器所指的元素的引用:"<< *b << endl;
//iter->mem,返回iter所指的元素(类,结构体等)mem成员
//cout << "返回上一个元素:" << *(--e) << endl;
//cout << "返回下一个元素:" << *(++b) << endl;
//==和!=分别用于判断两个迭代器是否相等
//一个综合的例子:
cout << "n一个综合的例子:-------->" << endl;
for (auto it = v1.begin(); it != v1.end(); it++){
cout << *it << " ";
}
//迭代器类型,前面我们获取的迭代器类型都是用auto自动推算的,也可以手动添加
cout << "n定义读写义迭代器:------------>" << endl;
for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++){
cout << *it << " ";
*it += 1;
}
//如果vector中的元素是一个常量,则只能使用const_iterator
//若vector中元素是常量,则begin()和end()返回只读迭代器,
//也可以使用cbegin()和cend()来返回非常量元素容器的只读迭代器
vector<const int> v7 = { 1, 2, 3, 4, 5 };
cout << "n定义只读(const)义迭代器:------------>" << endl;
for (vector<const int>::const_iterator it = v7.cbegin(); it != v7.cend(); it++){
cout << *it << " ";
}
//使用解引用符号获取迭代器所指元素
cout << "n使用解引用符号获取迭代器所指元素:" << *(v1.begin()) << endl;
//对于元素是类或者结构体的容器,可以使用解引用和.访问成员,
//也可以直接使用箭头运算符->访问成员(和指针一样一样的)
//
//可以使用+、-、+=、-=一个整数值来是迭代器跳过一些元素
//可以将两个迭代器相减得到两迭代器之间的差值
//可以使用>、>、=<、<=来比较两个迭代器的大小
//使用pop_back()来删除vector的尾元素
v1.pop_back();
//使用erase()来删除元素
v1.erase(v1.begin(), v1.begin() + 5);//删除开始到begin()+5之前那个元素,不包括后者
//使用clear()来清空vector
v1.clear();
//使用{}来将数组中的元素全部初始化为0,不初始化则全为随机值
int arr1[12]{};
for (auto i : arr1){//可以使用范围for循环访问数组
cout << i << " ";
}
system("pause");
return 0;
}
最后
以上就是轻松铃铛为你收集整理的【c++】use vector的全部内容,希望文章能够帮你解决【c++】use vector所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复