vector是一个类模板 模板本身不是类或函数。
vector的长度类型是跟string相似:string::size_type, vector<类型>::size_type
vector<int> v1; // 保持int类型
vector<string> V2; //
vector<Sales_item> Sales_V3; // 保持Sales_item类型
vector<vector<string>> V4;//该向量的元素是vector对象
// vector 能容纳大多类型的对象作为其元素,但因为引用不是对象,所以没有包含引用这种vector
关于初始化vector 是列表初始值还是元素数量:
//用一个整数来初始化vector 时,要区别是容量还是元素的值,主要 花括号和圆括号进行区别
vector<int> v1 = 10;//错误:必须使用直接初始化的形式指定向量大小
//但允许初始状态为空的vector另一个vector拷贝初始化,类型必须一致
vector<int> v11;
vector<int> v12 = v11;或者 vector<int> v12 (v11);
vector<int> v1 (10); // v1 有10个元素,这里初始值是10个int默认初始值0;
vector<int> v2 {10}; //v2 有1个元素,这里初始值是10;
vector<int> v3 (10,1); // v3 有10个元素,这里初始值是10个1;
vector<int> v {10,1}; //v4 有2个元素,这里初始值分别是10和1;
//但在对string对象时,初始化使用花括号的形式但是提供的值又不能用来列表初始化,
就要考虑用这样的值来构造vector对象
vector<string> v5 {"hi"} //列表初始化 1个元素“hi”
vector<string> v6 ("hi")//错误,不能使用字符串字面值构建这种vector对象,圆括号应给定长度
vector<string> v61 (10,"hi")//正确,10个"hi"元素构建vector对象
vector<string> v7 {10} // V7有10个默认初始化的元素(列表初始化后失败,尝试构建)
vector<string> v8 {10,"hi"}//V8有10个值为“hi”的元素(列表初始化后失败,尝试构建)
vector<string> v10 {“10”,"hi"} //V10有2个值分别为“10”和“hi”的元素
//V7 V8提供的值含有int型,显然不能用int型初始化string对象,
//编译器确认无法执行列表初始化后,会尝试默认初始化构建vector对象
//向vector对象添加元素:不能使用下标添加元素
如果一个循环体内包含向vector对象添加元素的语句则不能使用范围for循环
(因为范围for循环语句不应改变其遍历序列的大小)
vector<int> vv //默认初始化不含有任何元素,空vector
//不能进行vv[i]=赋值,因为vv最开始不包含任何元素,
//应使用push_back添加元素,依次放到末尾端,
vv.push_back(word)
迭代器随笔“
string s("ss")
vector<int> V1;
vector<string> V2(10);
auto it = V1.begin()
auto it1 = V2.begin()
(*it).empty() //错误,it解引用之后是int数据,int本质上是内置算术数据类型,
//而string和vector是对象,只有对象才有成员函数
(*it1).empty() //正确
s.empty() //正确操作