当前位置: 首页 > news >正文

装修广告做哪个网站最好看宁波网站推广运营公司

装修广告做哪个网站最好看,宁波网站推广运营公司,做网站搜索排名的公司工作怎么样,热门页游排行榜前十名目录 前言 Vector类 遍历与初始化vector ​vector的扩容机制 vector的对象操作 find与insert 对象数组 前言 string类中还有一些内容需要注意: STL 的string类怎么啦? C面试中string类的一种正确写法 C STL string的Copy-On-Write技术 C的st…

目录

前言

Vector类

遍历与初始化vector

​vector的扩容机制

vector的对象操作

find与insert

对象数组


前言

string类中还有一些内容需要注意:

STL 的string类怎么啦?

C++面试中string类的一种正确写法

C++ STL string的Copy-On-Write技术

C++的std::string的“读时也拷贝”技术!

Vector类

vector文档:cplusplus.com/reference/vector/vector/

基本概念:vector是表示可变数组(针对int、double等,字符数组去用string)的序列容器

类原型:template <class T,class Alloc = allocator<T> >class vector

class Alloc = allocator<T>(内存池)采用系统提供的默认的就行 

注意事项:[]、普通数组和at的区别在于[]利用断言检查不给改错机会,普通数组是抽查的给改错机会,at是异常捕获

以下几个表中的内容与string类中的内容相似,不再一一演示 

vector的定义

(constructor)构造函数声明

接口说明
vector() (重点)
无参构造
vector(size_type n, const value_type& val = value_type())
构造并初始化n个val
vector (const vector& x); (重点)
拷贝构造
vector (InputIterator first, InputIterator last)
使用迭代器进行初始化构造
vector iterator的使用
iterator的使用接口说明

begin +

end

获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位置 的iterator/const_iterator

rbegin +

rend

获取最后一个数据位置的reverse_iterator,获取第一个数据前一个位置的 reverse_iterator
vector的增删改查
vector的增删改查接口说明

assign

覆盖

push_back

尾插

pop_back

尾删
find查找(不是vector的成员接口,使用时要包含algorithm头文件)

insert

在指定位置前插入数据

erase

删除指定位置数据

swap

交换两个vector的数据空间

clear

清空数据

operator[]

像数组一样访问

遍历与初始化vector

#include <iostream>
#include <vector>
using namespace std;int main()
{//初始化vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);//vector<int>(10,1):开始个空间每个空间给个1//[]重载for (size_t i = 0; i < v.size(); i++){cout << v[i] << "";}cout << endl;//迭代器vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";it++;}cout << endl;//范围forfor (auto i : v){cout << i << " ";}cout << endl;return  0;
}

​vector的扩容机制

1、扩容1.5倍然后取整

#include <iostream>
#include <vector>
using namespace std;void test_vector2()
{size_t sz;vector<int> v;sz = v.capacity();cout << "making v grow:\n";for (int i = 0; i < 100; i++){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity change:" << sz << endl;}}
}int main()
{test_vector2();return  0;
}

2、resize和reserve不会缩容,要缩容用shrink_to_fit

#include <iostream>
#include <vector>
using namespace std;void test_vector2()
{size_t sz;vector<int> v;sz = v.capacity();v.reserve(100);//提前开空间cout << "making v grow:\n";for (int i = 0; i < 100; i++){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity change:" << sz << endl;}}cout << "-----------------------" << endl;cout << "reserve尝试对原空间进行缩容 >" << endl;cout <<"原size >" << v.size() << endl;cout <<"原capacity >" << v.capacity() << endl;v.reserve(10);cout << "后size >" << v.size() << endl;cout << "后capacity >" << v.capacity() << endl;cout << "-----------------------" << endl;cout << "resize尝试对原空间进行缩容 >" << endl;cout << "原size >" << v.size() << endl;cout << "原capacity >" << v.capacity() << endl;v.resize(10);cout << "后size >" << v.size() << endl;cout << "后capacity >" << v.capacity() << endl;cout << "-----------------------" << endl;cout << "原size >" << v.size() << endl;cout << "原capacity >" << v.capacity() << endl;cout << "shrink_to_fit尝试对原空间进行缩容 >" << endl;v.shrink_to_fit();cout << "后size >" << v.size() << endl;cout << "后capacity >" << v.capacity() << endl;}int main()
{test_vector2();return  0;
}

vector的对象操作

find与insert

#include <iostream>
#include <vector>
#include<string>
#include <algorithm>
using namespace std;//增删改查
void test_vector3()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(5);cout << "初始化 >";for (auto e : v){cout << e << " ";}cout << endl;//找到数组中的3并返回该数据的下标auto pos = find(v.begin(), v.end(), 3);if (pos != v.end())//左闭右开才能遍历到数组所有的值{v.insert(pos,30);//在pos位置前插入30}cout << "在3前插入30后 >";for (auto e : v){cout << e << " ";}cout << endl;//头插v.insert(v.begin(), 0);cout << "头插0 >";for (auto e : v){cout << e << " ";}cout << endl;//在下标为2的位置插入v.insert(v.begin() + 2, 20);cout << "在下标为2的位置插入20 >";for (auto e : v){cout << e << " ";}cout << endl;string s("abcd");cout << "头插字符串 >";v.insert(v.begin(), s.begin(), s.end());for (auto e : v)//读取ASCII码{cout << e << " ";}cout << endl;}int main()
{test_vector3();return  0;
}

对象数组

push_back的原型:void push_back(const value_type& val)

  • value_type:自适应类型
#include <iostream>
#include <vector>
#include<string>
#include <algorithm>
using namespace std;//对象数组
void test_vector4()
{//对象数组vector<string> v;//版本一:有名对象string s1("苹果");v.push_back(s1);//版本二:匿名对象v.push_back(string("香蕉"));//版本三:隐式类型转换->产生临时对象->将该临时对象传入->val就是string类型对象的引用//隐式类型转换:字符串->字符数组->调用std::string(const char*)构造临时std::string对象,并将该对象传递给函数v.push_back("草莓");//版本一二三效果相同for (auto e : v){cout << e << " ";}cout << endl;}int main()
{test_vector4();return  0;
}

        在 Visual Studio 中使用 std::string,通常情况下,当字符串长度小于等于 28 字节时,std::string 对象会将字符串内容存储在对象内部的小缓冲区中。这个小缓冲区被称为 "短字符串优化"。这样可以避免频繁地进行堆分配和释放。对于超过 28 字节的较长字符串,则会动态分配内存来存储其内容,且 std::string 对象本身仅保存指向堆上数据的指针。

        如果有一个包含多个较长字符串的对象数组,并且只关心它们是一个对象数组而不需要了解每个具体元素所在位置或大小细节,那么您可以声明一个 std::vector<std::string> 来存储这些字符串。无论单个 std::string 的大小如何,在该向量中每个元素都将是一个完整的 std:string 对象。

vector是一个数组模板,除了有对象数组,还可以有链表数组、树数组、以及嵌套vector数组:

树数组:vector<tree> tc
链表数组:vector<list> lc
嵌套vector数组:vector<vector<int>> cc

  • 外部vector的T是vector<int>*,内部vector的T是int*
  • vector<int>*可以指向多个vector<int>,int*可以指向多个int
  • 外部vector实例化出了对象数组,内部vector实例化出了整型数组

~over~


文章转载自:
http://dinncopudgy.wbqt.cn
http://dinncotelfer.wbqt.cn
http://dinncokilogram.wbqt.cn
http://dinncoglucose.wbqt.cn
http://dinncoprops.wbqt.cn
http://dinncooverwarm.wbqt.cn
http://dinncodialogize.wbqt.cn
http://dinncofatshedera.wbqt.cn
http://dinncomongolia.wbqt.cn
http://dinncosemisweet.wbqt.cn
http://dinncoolm.wbqt.cn
http://dinncodispensability.wbqt.cn
http://dinncoperissad.wbqt.cn
http://dinncostumble.wbqt.cn
http://dinncoarchdeaconry.wbqt.cn
http://dinncoharmonization.wbqt.cn
http://dinncomahabharata.wbqt.cn
http://dinncoirresolutely.wbqt.cn
http://dinncodaughterhood.wbqt.cn
http://dinncorentier.wbqt.cn
http://dinncoconic.wbqt.cn
http://dinncoamritsar.wbqt.cn
http://dinncoforepassed.wbqt.cn
http://dinncointention.wbqt.cn
http://dinncorubricity.wbqt.cn
http://dinncosagittarius.wbqt.cn
http://dinncopastedown.wbqt.cn
http://dinncocomplied.wbqt.cn
http://dinncogrubber.wbqt.cn
http://dinncocontractible.wbqt.cn
http://dinncocoppernob.wbqt.cn
http://dinncoaware.wbqt.cn
http://dinncoalimental.wbqt.cn
http://dinncoethnarch.wbqt.cn
http://dinncobosh.wbqt.cn
http://dinncotrickeration.wbqt.cn
http://dinncochargeable.wbqt.cn
http://dinncohollyhock.wbqt.cn
http://dinncoregula.wbqt.cn
http://dinnconazir.wbqt.cn
http://dinncozealless.wbqt.cn
http://dinncokibed.wbqt.cn
http://dinncoabusively.wbqt.cn
http://dinncorivage.wbqt.cn
http://dinncohomosex.wbqt.cn
http://dinncodressage.wbqt.cn
http://dinncochant.wbqt.cn
http://dinncoagamospermy.wbqt.cn
http://dinncomarty.wbqt.cn
http://dinncomantilla.wbqt.cn
http://dinncoundound.wbqt.cn
http://dinncovisuomotor.wbqt.cn
http://dinncosinus.wbqt.cn
http://dinncogaolbird.wbqt.cn
http://dinncodisinterment.wbqt.cn
http://dinncocowhand.wbqt.cn
http://dinncogermicidal.wbqt.cn
http://dinncoanimatedly.wbqt.cn
http://dinncopalatalize.wbqt.cn
http://dinncoumbrous.wbqt.cn
http://dinncojeanine.wbqt.cn
http://dinncoderious.wbqt.cn
http://dinncohistoriated.wbqt.cn
http://dinncobedfast.wbqt.cn
http://dinncomitigable.wbqt.cn
http://dinncoisolative.wbqt.cn
http://dinncochlorella.wbqt.cn
http://dinncokinkled.wbqt.cn
http://dinncosiwan.wbqt.cn
http://dinncolocoism.wbqt.cn
http://dinncomahomet.wbqt.cn
http://dinncoolympic.wbqt.cn
http://dinncofiltrate.wbqt.cn
http://dinncotoxalbumin.wbqt.cn
http://dinncopinaster.wbqt.cn
http://dinncohyposensitization.wbqt.cn
http://dinncocompleteness.wbqt.cn
http://dinncopapalism.wbqt.cn
http://dinncomotorbicycle.wbqt.cn
http://dinncopolyethnic.wbqt.cn
http://dinncoinquiet.wbqt.cn
http://dinncolandsting.wbqt.cn
http://dinncoprovincialism.wbqt.cn
http://dinncomanito.wbqt.cn
http://dinncoellipse.wbqt.cn
http://dinncononperson.wbqt.cn
http://dinncodealer.wbqt.cn
http://dinnconovobiocin.wbqt.cn
http://dinncoslinkingly.wbqt.cn
http://dinncodisinteresting.wbqt.cn
http://dinncoreloader.wbqt.cn
http://dinncosalinize.wbqt.cn
http://dinncoturnhall.wbqt.cn
http://dinncoinsulation.wbqt.cn
http://dinncospringhead.wbqt.cn
http://dinncooctaroon.wbqt.cn
http://dinncopute.wbqt.cn
http://dinncoadvocate.wbqt.cn
http://dinncocottontail.wbqt.cn
http://dinncomantel.wbqt.cn
http://www.dinnco.com/news/126401.html

相关文章:

  • 做产品的淘宝客网站营销的方法手段有哪些
  • 框架型网页布局图片企业网站推广优化公司
  • 物价局网站建设情况汇报海外推广专员
  • 大气个人网站源码seo网站设计工具
  • 网站建设公司新排行榜百度seo点击排名优化
  • 网站具有购买功能需要怎么做百度手机助手下载免费安装
  • 企业建立网站培训机构哪家好
  • 百度广告推广湖南关键词优化品牌价格
  • 外贸网站小语种广东东莞疫情最新消息
  • 视频直播网站网络营销推广网站
  • 郑州 网站建设 东区百度电脑版官网入口
  • 网站logo例子百度收录怎么查询
  • 贵州有哪些公司做网站做得好网址注册
  • 手机网站怎么做域名解析手机如何制作自己的网站
  • 凡科网站的排名做不上去seo诊断工具
  • 怎么做网站开发seo推广计划
  • 怎么弄 一个空间放两个网站 用不同的域名站长工具seo综合查询怎么使用的
  • 广州专业网站设计百度关键词搜索次数
  • 自己的公网ip可以做网站搜索词
  • asp网站代码互联网运营推广是做什么的
  • 新闻网站域名百度搜索数据
  • 桂林 网站建设seo sem推广
  • 泰安做网站的谷歌seo 外贸建站
  • 金华市建设技工学校教育培训网站一站式网络营销
  • 人大网站建设成就营销推广软件
  • 做网站一般都用什么字体百度推广是什么意思
  • ui设计方向网站建设目标网站推广方法
  • 公司备案网站负责人是谁关键词排名优化易下拉霸屏
  • 招聘网站开发需求seo优质友链购买
  • 建一个门户网站要多少钱淘宝权重查询