vector的用法

发布时间 2023-07-21 09:00:29作者: zxinlog

1. 打印函数

   12 template <typename Container>
   13 void display(Container& con) {
   14     for (auto& elem : con) {
   15         cout << elem << " "; 
   16     }          
   17     cout << endl; 
   18 }          
   19            
   20 template <typename Container> 
   21 void printSizeCapacity(const Container& con) {
   22     cout << "con.size() = " << con.size() << endl;
   23     cout << "con.capacity() = " << con.capacity() << endl;
   24 }  

2. vector的初始化

   27     vector<int> num = {1, 3, 5, 7, 9, 8, 6, 4, 2};
   28     vector<int> num2(10, 5);
   29     vector<int> num3(num);
   30     vector<int> num4(num.begin(), num.end());

3. vector的插入与删除

如果是 push_back() 的话,vector的capacity 如果不足,则,capacity *= 2; 。

如果是 insert() 的话,vector 的capacity 视情况而定。设 size = m, capacity = n。 要插入的数量是 t。
如果 n - m < t < m , capacity *= 2;
如果 t > m , 或t > n,则 capacity = t + m。

//insert(it, 999); 在 it 位置插入999.

   27 void test0() {
   28     vector<int> number = {1, 3, 5, 7, 9, 8, 6, 4, 2};
   29     vector<int> number2(13, 5);
   30     display(number);
   31     printSizeCapacity(number);
   32 
   33     cout << endl << "在vector的尾部进行插入与删除" << endl;
   34     number.push_back(100);
   35     number.push_back(200);
   36     display(number);
   37     printSizeCapacity(number);
   38 
   39     cout << endl << "在vector的中间进行插入" << endl;
   40     auto it = number.begin();
   41     it++;
   42     it++;
   43     cout << "*it = " << *it << endl;
   44     number.insert(it, 999);
   45     display(number);
   46     printSizeCapacity(number);
   47     // vector的insert扩容原理
   48     // 将元素的个数size()= m, 容量的大小capacity() = n,
   49     // 将待插入的元素的个数设置为t
   50     // 1、当t < n - m,此时就不会扩容
   51     // 2、当 n - m < t < m,此时会按照2 * m进行扩容
   52     // 3、当n - m < t, m < t < n,此时会按照 t + m进行扩容
   53     // 4、当n - m < t, t > n,此时会按照 t + m进行扩容
   54     number.insert(it, number2.begin(), number2.end());
   55     display(number);
   56     printSizeCapacity(number);
   57 }