做外汇有哪些正规的网站,广东省网站备案注销,商丘seo外包,网站建设方案范文1000字.vector的构造函数#xff08;1#xff09; 构造函数的参数是内存池#xff0c;我们日常不需要理会#xff0c;除非你要用自己的内存池#xff0c;这就是默认构造#xff0c;explicit修饰#xff0c;说明该函数不支持隐式类型转换。#xff08;2#xff09;用 n 个 va….vector的构造函数1 构造函数的参数是内存池我们日常不需要理会除非你要用自己的内存池这就是默认构造explicit修饰说明该函数不支持隐式类型转换。2用 n 个 val 构造对象3用迭代器区间构造对象不一定是自己的迭代器可以类型转换的也行4拷贝构造代码语言javascriptAI代码解释//插入10个数据都是1 vectorint v1(10, 1); //默认构造 vectorint v2; //拷贝构造 vectorint v3(v1); //迭代器区间构造 vectorint v4(v1.begin(), v1.end()); //也可以用别的容器的迭代器前提是支持类型转换的 string s1(xxxxxxxxxxx); //string迭代器内容是char的其ASCII码值是int所以可以类型转换 //并且char转int不用考虑数据溢出风险小转大不会溢出。 vectorint v5(s1.begin(), s1.end());注意最后一个注释这里再讲解一个 C11 添加的非常实用的构造花括号 { } 是 initializer_list 类型C11定义的新参数 其实string也有不过没用处十分麻烦所以没之前介绍代码语言javascriptAI代码解释//vectorint v6({ 1,2,3,4,5,6,7,8,9,10 }); vectorint v7 { 1,2,3,4,5,6,7,8,9,10 };如图编译器优化为直接构造(原本是隐式类型转换构造了一个vector对象)严格来说是上面那样拷贝构造的写法不过都可以。有了initializer_list可以让它像数组一样初始化。它的底层原理就是两个指针 把括号内的数据存在临时数组然后提供了指向首位置和尾下一个位置的指针迭代器所以它是可以使用 范围for 的2.迭代器以及各种简单接口2.1迭代器vector的迭代器是和string一样的用法就是那样2.2capacity简单接口是不是十分熟悉是的大部分在 string 中都有使用方式也一样都是成员函数利用vector对象就能随手调用2.3operatoroperator 十分好用所以单独拿出来讲不过它的使用也十分简单2涉及更难的知识目前不需要知道。只需要记住赋值是针对于 已存在对象的操作 3的initializer_list 类型也是针对已存在对象不要与构造函数混淆代码语言javascriptAI代码解释vectorint v1{1,2,3,4,5} vectorint v2; //v2先存在才能谈赋值。 v2 v1; //一样这才是赋值不要与第一行的构造混淆 v2{1,0,0,8,6};2.4 数据获取接口 atoperator[ ]这部分和string也是一样。甚至用法也一样。 也只需要知道前两个。 再次提醒at和[ ] 都会检测是否越界不过at 抛异常,不中止程序[ ] 是严格的 断言检查直接中止程序。 在Debug下3.vector的增删查改主要了解这部分的使用3.1push_back尾插没什么区别参数都是 一个值 val3.2pop_back这个没参数直接调用函数实现 尾删3.3insert这里的insert参数都是用迭代器iterator 实现的第一个最常用我们了解第一个就行代码语言javascriptAI代码解释//头插 ,头删, 指定位置插入或者删除 v1.insert(v1.begin(), 0); v1.insert(v1.begin()3, 1);迭代器参数可以是表达式形式3.4erase1删除pos迭代器位置 2删除一段迭代器区间最常用的是1删除pos迭代器位置代码语言javascriptAI代码解释v1.erase(v1.begin()); v1.erase(v1.begin()3);迭代器可以是表达式形式3.5clear清理数据不清空间和string一样4.initializer_list { } 与 隐式类型转换迭代器访问我们构造一个struct AA代码语言javascriptAI代码解释//也是类 但默认为public struct AA { int _a1 1; int _a2 1; AA(int a1, int a2) :_a1(a1) ,_a2(a2) {} };这是一个类struct也是类不过成员默认为public 我们可以这样代码语言javascriptAI代码解释AA aa1 { 0,0 }; AA aa2({ 0,0 });这就是多参数的隐式类型转换构造了AA对象 两种写法都行那如果我们定义了一个存储AA的vectorvectorAA就可以这样代码语言javascriptAI代码解释//隐式类型转换 vectorAA v1 { {1,1},{2,2},{3,3} }; //也可以一部分是AA对象 vectorAA v1 { aa1,{1,1},{2,2},{3,3} };这就是两者的结合可以避免繁琐地一个个创建AA对象直接用隐式类型转换vector构造更方便4.1迭代器访问当利用迭代器遍历 vectorAA 时若AA并没有支持流插入 cout所以无法完成遍历此时有两种办法1. 重载 运算符让AA支持 cout 输出2. 让迭代器用 - 访问AA对象的成员(public为什么迭代器it可以访问类的成员已知vector的迭代器是指针的封装。vector底层是个数组存储AA对象迭代器指向数组内容也就是指向AA对象那这个指针就是 AA* 指针AA* 指针就可以访问AA内部的公有成员。5.emplace_back 和 push_back 的差异emplace_back 和 push_back 作用基本相同 但也有差异。我们衔接 4. 的内容来理解代码语言javascriptAI代码解释//push_back 和 emplace_back 用法差不多 v1.push_back(aa1); v1.emplace_back(aa1);它们都可以插入一个值 但是emplace_back 代码语言javascriptAI代码解释//可以直接传构造AA的参数因为他是可变参数模板现阶段没学 //更高效会直接构造AA v1.emplace_back(1, 1);push_back:代码语言javascriptAI代码解释//只能传AA对象不能穿构造AA的参数这就是区别 //{11} 也是AA对象因为隐式类型转换构造临时对象AA v1.push_back({ 1,1 });这就是区别 有时候emplace_back 更高效。注意这两个写法不能交叉用都是各自专属www.dongchedi.com/article/7586104283570340414www.dongchedi.com/article/7586107772832940568www.dongchedi.com/article/7586105171260801598www.dongchedi.com/article/7586103844216504856www.dongchedi.com/article/7586105032132051480www.dongchedi.com/article/7586105437142417944www.dongchedi.com/article/7586104244311769625www.dongchedi.com/article/7586103373234356761www.dongchedi.com/article/7586103016810971672www.dongchedi.com/article/7586105462731440664www.dongchedi.com/article/7586103797324218942www.dongchedi.com/article/7586103300483973694www.dongchedi.com/article/7586102611422511678www.dongchedi.com/article/7586102949072437822www.dongchedi.com/article/7586108028160836121www.dongchedi.com/article/7586372917312012824www.dongchedi.com/article/7586373081946800702www.dongchedi.com/article/7586373137030677017www.dongchedi.com/article/7586374371732685374www.dongchedi.com/article/7586376512555958809www.dongchedi.com/article/7586375382136816190www.dongchedi.com/article/7586376917411463704www.dongchedi.com/article/7586378437947015742www.dongchedi.com/article/7586377210039501374www.dongchedi.com/article/7586378517827912217www.dongchedi.com/article/7586372861272031806