范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C中STL常见问题汇总,越来越熟悉STL底层原理和应用(2)

  STL中迭代器什么时候会失效?对于 序列容器 vector,deque来说,使用erase后,后边 的每个元素的迭代器都会失效 ,后边每个元素都往前移动一位, erase返回下一个有效的迭代器 。
  说明
  当删除一个元素后,内存中的数据会 发生移动 以保证数据的紧凑。所以删除一个元素后,其他数据的地址发生了变化,之前获取的迭代器根据原有信息就访问不到正确的数据。 //迭代器失效 void vectorTest() {     vector container;     for (int i = 0; i < 10; i++)     {         container.push_back(i);     }       vector::iterator iter;      for (iter = container.begin(); iter != container.end(); iter++)     {             if (*iter > 3)               container.erase(iter);     }        for (iter = container.begin(); iter != container.end(); iter++)     {             cout<<*iter< container;     for (int i = 0; i < 10; i++)     {         container.push_back(i);     }       vector::iterator iter;      for (iter = container.begin(); iter != container.end();)     {             if (*iter > 3) { 				iter = container.erase(iter); 			} 			else { 				iter ++; 			}     }        for (iter = container.begin(); iter != container.end(); iter++)     {             cout<<*iter< #include #include using namespace std;  int main() {     map mapData;     mapData["a"] = 1;     mapData["b"] = 2;     mapData["c"] = 3;      map::iterator itMap = mapData.begin();     while (itMap != mapData.end())     {         if (strcmp(itMap->first.c_str(), "a") == 0)         {             mapData.erase(itMap++);         }         else         {             itMap++;         }          /* 迭代器失效         if (strcmp(itMap->first.c_str(), "a") == 0)         {             mapData.erase(itMap);         }         itMap++;         */     } }list来说,它使用了不连续分配的内存,并且它的erase方法也会返回下一个有效的迭代器
  上面两种方法都可以使用。STL中迭代器的作用,有指针为何还要迭代器?迭代器作用
  (1)用于指向顺序容器和关联容器中的元素。
  (2)通过迭代器可以读取它指向的元素。
  (3)通过非const迭代器可以修改其指向的元素。迭代器和指针的区别
  迭代器不是指针,是类模板,表现得像指针。 迭代器模拟了指针的一些功能,重载了指针的一些操作符。迭代器本质是 封装了原生指针 ,是指针概念的一种提升,提供了比指针更高级的行为,可以看成一种 智能指针 ,他可以根据不同类型的数据结构来实现不同的++,--等操作。 迭代器产生的原因
  Iterator类的访问方式就是把不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环 遍历集合 的效果。 STL 迭代器是怎么删除元素的
  这主要考察迭代器失效的问题,上面已经总结。
  STL 中 resize 和 reserve 的区别两个概念
  (1)capacity :该值在容器初始化时赋值,指的是容器能够 容纳的最大的元素 的个数。还不能通过下标等访问,因为此时容器中还没有创建任何对象。
  (2)size :指的是此时 容器中实际的元素个数 。可以通过下标访问0-(size-1)范围内的对象。 resize和reserve区别
  (1)resize既分配了空间,也创建了对象 ; reserve表示容器预留空间 ,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。
  (2)resize既修改capacity大小,也修改size大小;reserve只修改capacity大小,不修改size大小
  (3)两者的形参个数不一样。 resize带两个参数,一个表示容器大小,一个表示初始值(默认为0);reserve只带一个参数,表示容器预留的大小。 STL 容器动态链接可能产生的问题?可能会产生什么问题
  容器是一种动态分配内存空间的一个集合类型的变量 。在一般的程序函数里,局部容器,参数传递容器,参数传递容器的引用,参数传递容器指针都是可以正常运行的,而在动态链接库函数内部使用容器也是没有问题的,但是给动态库函数传递容器的对象本身,则会出现内存堆栈破坏的问题。 产生问题原因
  容器和动态链接库相互支持不够好,动态链接库函数中使用容器时,参数中只能传递容器的引用,并且要保证容器的大小不能超出初始大小,否则导致容器自动重新分配,就会出现内 存堆栈破坏问题 map 和 unordered_map 的区别?底层实现map实现机理
  map内部实现了一个 红黑树 , 红黑树有自动排序的功能,因此map内部所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素。对于map进行的查找、删除、添加等一系列的操作都相当于是对红黑树进行的操作。map中的元素是按照二叉查找树存储的(左子树上所有节点的键值都小于根节点的键值,右子树所有节点的键值都大于根节点的键值)。 中序遍历可将键值按照从小到大遍历出来 。 unordered_map实现机理
  unordered_map内部实现了一个 哈希表 ,通过把关键码值映射到Hash表中一个位置来访问记录, 查找时间复杂度可达O(1) ,在海量数据处理中有着广泛应用。因此, 元素的排列顺序是无序的。 push_back 和 emplace_back 的区别
  要将一个临时变量push到容器的末尾, push_back()需要先构造临时对象,再将这个对象拷贝到容器的末尾 ,而 emplace_back()则直接在容器的末尾构造对象 ,这样就省去了拷贝的过程。 #include using namespace std; #include #include  class TestA { public: 	string str; 	TestA(int i) 	{ 		str = to_string(i); 		cout << "构造函数的调用" << endl; 	}  	~TestA() 	{ 		//cout << "析构函数的调用" << endl; 	}  	TestA(const TestA& other) :str(other.str) 	{ 		cout << "拷贝函数构造" << endl; 	}  };  int main() { 	vector< TestA> vec; 	vec.reserve(10); 	for (int i = 0; i < 10; i++) 	{ 		//调用了10次构造函数和10次拷贝构造函数 		vec.push_back(i);  		//调用了10次构造函数,没有调用拷贝构造函数 		//vec.emplace_back(i); 	} 	return 0; }
  push_back()运行结果:
  emplece_back()运行结果:

山寨iPhone见得多,山寨小米你见过吗?我买手机没被坑过,但周围的朋友亲戚倒是被坑过。小米和三星被山寨最多倒是没错,因为我周围情况差不多比如说小米和红米系列,山寨的可是非常之多。尤其是红米系列,上图是小米系列山寨与真机对你觉得空气加湿器有用吗?为什么?谢谢邀请。有用,但要看你处在什么环境。居住在有地暖的楼层,空气非常干燥,特别是冬天,用加湿器增加湿度非常好,让人呼吸通畅,很舒服,也可以降低感冒的发生。加湿器?从来不用,家中不湿答现在中国和美国的量子计算机发展谁更优秀一?什么是量子?量子就是微观世界中的粒子,当粒子之间相互作用所产生的力叫力学把两者结合在一起就是一种量子力学现象,又可称量子纠缠或粒子纠缠。量子相互纠缠的两大亮点是快和不确定性。由于不中国能建最新公告拟合计100亿元投资设立氢能业务及数字科技子公司中国能建公告,拟50亿元投资设立全资子公司中能建氢能源发展有限公司,抢抓氢能行业发展的机遇拟50亿元投资设立全资子公司中能建数字科技集团有限公司,系公司数字化转型和科技强企打造公司跻身中国市场前三单飞后荣耀手机销量劲增新加坡联合早报网站近期报道称,据市场调研公司CounterpointResearch称,自华为分拆后,业已独立的荣耀品牌在今年第3季度手机销量劲增,成中国国内市场第3大智能手机品牌司马南对话北大教授曹和平中国的芯片差距到底有多大?光刻机的应用司马南说到数字,很多人都知道,美国人从芯片入手来卡我们的脖子,现在芯片是我们最大的短板。我们每年进口的芯片比我们进口粮食花的钱还要多。华为能够设计出世界上最先进的芯片,美有微软苹果,日有丰田索尼,中国有什么国际知名的品牌世界经济在不断地发展提高,经济全球化也已经成了大势所趋,随着经济的发展,大量的企业不断涌入市场当中,在不同的行业当中也出现了众多具有代表性的品牌,在这样一个经济全球化的时代当中,出你知道各品牌手机的老总是哪个国家哪里人吗?品牌一小米手机系统比手机早上市一段时间该公司的CEO原先是国内名知名软件公司的掌门人(该软件公司推出的某款产品在功能上对抗了Microsoft自带的经典软件套装)。该手机品牌在销售摩根大通CEO加密货币没有内在价值但区块链是真实的全球知名投行摩根大通CEO杰米戴蒙(JamieDimon)对投资者投资加密货币发出警告。加密货币没有内在的价值。你基本上只是在买一个代币,我会非常小心。戴蒙在周三发布的CBS波士顿2021。11。28最新电脑配置推荐与方向更多关注与咨询关注于微信公众号装机不是程序猿CPUI310105散热赛普累屠城主板微星H510M爆破弹显卡核显内存影驰金属大师DDR430008G固态数码映众256GNVMEM。2晨鸣纸业入选2021年度山东省科技领军企业近日,山东省科学院情报研究所省创新发展研究院省科技服务发展推进中心,在济南联合举行2021年度山东省科技领军企业名单发布会,向社会发布了200家科技领军企业名单,晨鸣纸业等企业从全
超高投入造国潮,坦克300城市版上市就爆火什么是潮流?潮流不止体现为外在表现,还体现为内在态度。从某种意义上说,年轻人群体所具备的随性自由热血就是潮流。而对他们而已,拥抱潮流的工具可以是一件衣服一件配饰也可以说一款车,一款研发投入持续加码,三七互娱自研的多元化成果和全球化视野8月30日,三七互娱发布2021年半年度业绩报告。报告显示,上半年公司实现营业收入75。39亿元,归母净利润为8。54亿元,第二季度归母净利润环比增幅超500,前期投入正逐步回收。荣耀Magic3系列多主摄技术开宗立派手机多摄技术积累多年荣耀Magic3系列开宗立派,在双摄时代,荣耀2015年推出的荣耀6Plus有着划时代的意义,与当时的竖排双摄手机不同,它不仅首创了平行双摄镜头,而且两个镜头会埃万特推出新的生物填充聚丙烯和可持续解决方案组合Avient宣布在Fakuma2021国际塑料加工贸易展上推出新的生物填充聚合物。这一新产品加强了其可持续解决方案组合。新的reSoundNF生物填充等级以聚丙烯(PP)等聚合物为豪格防伪防伪标签赛道上的技术进阶防伪工艺的不断进化升级,对防伪标签企业提出更高要求,豪格防伪选择主动进阶,迎新而上。作者巧星小小一张防伪标签可叠加使用十几种工艺胶印丝印纳米颗粒荧光可变编码,甚至还能搭载声音信息这助力聚合物材料开发!住友化学旭化成开发了通用AI技术10月26日,住友化学表示,国家材料科学研究所(NIMS)旭化成株式会社三菱化学株式会社三井化学株式会社住友化学株式会社在由化学材料开放平台(化学MOP)组成的横向协作中,在通过机帝豪热销中购车优惠高达7000元福田深圳深意店帝豪现车限时优惠,可试乘试驾帝豪现车在店,购车可享多重优惠方案零息方案首付20,2年0息首付30,享3年0息超长期限超低月供方案首付50,月供652元起附加贷0首付低星瑞欢迎莅临赏鉴价格直降1000元深圳深意星瑞现车限时优惠,可试乘试驾星瑞现车在店,购车可享多重优惠方案超级充值礼遇8月31日前购车可享4年12万公里免费保养超级保值礼遇8月31日前购车的新车主首任车主可获得2年7远景限时优惠高达8000元欢迎垂询福田深圳深意店远景现车限时优惠,可试乘试驾远景现车在店,购车可享多重优惠方案零息方案首付20,2年0息50享3年0息超长期限超低月供方案首付50,每天18元远景带回家附加贷0首付低帝豪GL限时优惠目前优惠高达6000元福田深圳深意店帝豪GL现车限时优惠,可试乘试驾帝豪GL现车在店,购车可享多重优惠方案零息方案首付20起2年0息首付35起享3年0息超长期限超低月供方案首付50,月供719元起附加贷博越全系热销中限时优惠高达1万元福田深圳深意店博越PRO现车限时优惠,可试乘试驾博越PRO现车在店,购车可享多重优惠方案零息方案首付30起2年0息首付45起享3年0息超长期限超低月供方案每天一杯奶茶钱博越PRO贷