练习9.35
capcity是最多能容纳多少元素(即标准库分配的内存),而size是当前容器内有多少元素,capacity大于等于size;
练习9.36
不能,capacity只能大于等于size;
练习9.37
list是双向链表,他里面的元素的排列方式不是连续存储的;而array在声明和定义的时候就必须给定其大小,它的大小是固定的;
练习9.38
’
1 #include<iostream> 2 #include<vector> 3 #include<list> 4 5 using namespace std; 6 7 int main() 8 { 9 vector<int> ivec; 10 cout << "ivec: size : " << ivec.size() << "ivec: capacity: " << ivec.capacity() << endl; 11 for (vector<int>::size_type ix = 0; ix != 24; ++ix) 12 ivec.push_back(ix); 13 ivec.reserve(50); 14 cout << "ivec: size : " << ivec.size() << "ivec: capacity: " << ivec.capacity() << endl; 15 while (ivec.size() != ivec.capacity()) 16 ivec.push_back(0); 17 cout << "ivec: size : " << ivec.size() << "ivec: capacity: " << ivec.capacity() << endl; 18 ivec.push_back(42); 19 cout << "ivec: size : " << ivec.size() << "ivec: capacity: " << ivec.capacity() << endl; 20 system("pause"); 21 return 0; 22 }
练习9.39
首先分配一个至少能容纳1024个字符的空间;
接下来输入字符串,如果输入的字符数少于1024,最后将长度调整为长度的二分之三,后面的元素初始化为空字符串;
如果输入的字符数大于1024,标准库先给预留一部分内存,后面的操作类似;
练习9.40
read size capacity
256 384 1024
512 768 1024
1000 1500 2000
1048 1572 2048