C++第三章:vector 及迭代器

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() //正确操作
     
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值