当前位置:首页 > 编程语言 > 正文

4.一次做完C primer 5th 练习9.41和9.42 关于类似于vector扩容方式的理解

11-18 编程语言

标签:nbsp   out   cap   ace   提升   如何   初始   ima   push   

(1)练习9.41 编写程序,从一个vector<char>初始化一个string

(2)练习9.42假定你希望每次读取一个字符存入一个string中,而且知道最少需要读取100个字符,应该如何提升性能?

 1 #pragma
 2 #include "pch.h"
 3 #include <iostream>
 4 #include<vector>
 5 #include<string>
 6 using namespace std;
 7 void fun1(int &a) {
 8     a = 10;
 9 }
10 int main(void)
11 {
12     vector<char> vec = {a,b,c,d,d, d, d, d, d, d, d, d, d, d, d, d};
13     string str(vec.begin(), vec.begin()   1);
14     cout<<"1 element‘s capacity:"<<str.capacity();
15     cout << endl;
16     str.push_back(*(vec.begin()   1));
17     cout<<"two elements‘s capacity:"<<str.capacity();
18     for (int i = 0; i < 14; i  ) {
19         str.push_back(*(vec.begin()  2 i));
20     }
21     cout << endl;
22     cout << "15 elments‘s capacity:" << str.capacity();
23 }

技术图片

string的扩容方式已两倍扩增,因为已知道至少100个字符,只需要首次扩容就指定容量大于100就可以了,当然你不想浪费空间的话就不要指定为201,这取决于你实际的插入次数,但是你至少能避免掉前100次插入的扩容操作。

使用reserve()函数扩容。

 

4.一次做完C primer 5th 练习9.41和9.42 关于类似于vector扩容方式的理解

标签:nbsp   out   cap   ace   提升   如何   初始   ima   push   

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/biancheng/12127.html