- Vector是一组通过索引来访问顺序存储中的数据元素。
用Vector名和索引号组合,例如,v[0],v[6].
Vector的索引是从0开始的。
Vector知道自己的大小,即Vector既存数据元素,也存数据个数。
vector<int> v = {2,4,6,8,10};
定义一个vector需要确定定义数据类型和始集,数据类型放在vector<>中,且每个vector的数据集类型是一致的。
当给定一个vector定义后(并未指定数据元素值),根据数据类型的不同,它的每个数据元素将赋予不同的缺省值。
vector<int> vi(4);//初始化为0
vector<string> vs(6);//初始化为“”
遍历一个vector
vector<int> v = {2,4,5,6};
for(int i = 0; i < v.size(); ++i)
cout<<v[i]<<"\n";
范围for循环,一般用于对元素序列做一次遍历的情形
vector<int> v = {1,2,3,4};
for(int i:v)
cout<<i<<"\n";
2.vector空间增长
在使用vector时,我们一般先定义,再填充值,这里一般用到push_back().
push_back(),将一个新元素添加到vector中,并且是放在vector的尾部。类似于链表的尾插法。因此vector不需要事先知道要存储数据大小是多少,而且可以往vector中任意添加不同个数的元素。
vector<int> v;//定义,未初始化
v.push_back(1);
v.push_back(2);
v.push_back(3);
push_back()是vector的一个成员函数,调用成员属性用“.”
对象名.函数名(参数名);
vector类似于C语言或其他编程语言中的数组
3.数值读入
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main(){
//用一个容器存放输入的温度值
vector<double> v;
for (double temp; cin >> temp;)
v.push_back(temp);
//计算均值
double sum = 0;
for (double temp : v)
sum += temp;
cout << "the arverage is " << sum / v.size() << "\n";
//计算中位数
sort(v.begin(),v.end());
//sort()对vector容器的排序,可以是一维的,也可以是二维的,要用v.begin(),V.end()
cout << "the middle is " << v[v.size() / 2] << "\n";
//我们假设读入温度值,读入到v中,如果正确输入数据,cin>>temp,返回true,否则返回false。
//因此,for循环读入我们输入的所有double值,直到读入的值不是double
//例如,我们输入1.1 2.2 3.3 4.4. 5.5 6.6 |,这里的|不是double类型
//我们也可以用CTRL+Z,它代表的是end-of-file,表示结束输入流,在输入流中,stream状态称为iostate的常量,有四个标志flag:
//goodbit,一切都好
//eofbit,end-of-file
//failbit,错误,某个I/O动作未完成
//badbit,毁灭性错误,造成不确定状态
//当他使用ctrl+Z结束时,在缓冲区中就有了eofflie标志,我们在下边的words读取数据时,流被终止,所以中间加入了std::cin.clear();
//cin.clear():清楚与它当前流相关的标志,默认是goodfile,它清楚所有标志,否则清除指定标志
std::cin.clear();
vector<string> words;
for (string temp01; cin >> temp01;)
words.push_back(temp01);
cout << "the numbers of words is" << words.size() << "\n";
sort(words.begin(), words.end());
for (int i = 0; i < words.size(); ++i)
if (i == 0 || words[i - 1] != words[i])
cout << "the words are " << words[i] << "\n";
//这里的string字符串比较,可以用“!=”“==”“>”">=""<""<="来比较
return 0;
}