C++ vector::resize() 函式



C++ vector::resize() 函式用於透過指定元素數量 (n) 調整容器大小。如果 n 小於當前向量的大小,則內容僅限於向量的前 n 個元素。resize() 函式的時間複雜度為線性。

如果 n 大於當前向量的大小,則新元素將新增到向量的末尾。如果指定了 val,則新元素將使用 val 初始化;否則,它們將進行值初始化。

語法

以下是 C++ vector::resize() 函式的語法:

void resize (size_type n);void resize (size_type n, const value_type& val);

引數

  • n - 表示新的容器大小,以元素數量表示。
  • val - 表示用於初始化新元素的值。

示例 1

讓我們考慮以下示例,我們將使用 resize() 函式。

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
   vector<int> v;
   cout << "Initial vector size = " << v.size() << endl;
   v.resize(5, 10);
   cout << "Vector size after resize = " << v.size() << endl;
   cout << "Vector contains following elements" << endl;
   for (int i = 0; i < v.size(); ++i)
      cout << v[i] << endl;
   return 0;
}

輸出

當我們編譯並執行上述程式時,將產生以下結果:

Initial vector size = 0
Vector size after resize = 5
Vector contains following elements
10
10
10
10
10

示例 2

考慮另一種情況,我們將使用字串型別並減小向量的大小。

#include <iostream>
#include <vector>
using namespace std;

int main(){
   vector<string> car = {"AUDI", "BUCATI", "CHERON", "BMW","BENZ"};
   cout << "current size of the vector: " << car.size() << endl;
   car.push_back("RS7");
   car.push_back("Q5");
   car.push_back("LAMBO");
   cout << "current size of the vector after insertion: " << car.size() << endl;
   car.resize(3);
   cout << "current size of the vector after resize: " << car.size() << endl;
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

current size of the vector: 5
current size of the vector after insertion: 8
current size of the vector after resize: 3

示例 3

在以下示例中,我們將使用 n 大於當前向量的大小。

#include<iostream>  
#include<vector>  
using namespace std;
  
int main(){
   vector<string>  bike{"RX100","ACCESS","ACTIVA"};  
   cout<<"Elements before resize:"<<endl;  
   for(int i=0;i<bike.size();i++)  
      cout<<bike[i]<<" "<<endl;  
   bike.resize(5,"VESPA");  
   cout<<"Elements after resize:"<<endl;  
   for(int i=0;i<bike.size();i++)  
      cout<<bike[i]<<" "<<endl;  
   return 0;
}  

輸出

執行上述程式後,將產生以下結果:

Elements before resize:
RX100 
ACCESS 
ACTIVA 
Elements after resize:
RX100 
ACCESS 
ACTIVA 
VESPA 
VESPA 

示例 4

以下是示例,我們將使用浮點型別並使用值調整向量大小。

#include <iostream>
#include <vector>
using namespace std;

int main(){
   vector<float> tutorial = {1.2,2.3,0.4,0.5};
   cout << "Vector values before resize:\n";
   for(int i = 0; i < tutorial.size(); ++i)
      cout << tutorial[i] << " ";
   cout << "\n";
   tutorial.resize(6,0.67);
   cout << "Vector values after resize:\n";
   for(int i = 0; i < tutorial.size(); ++i)
      cout << tutorial[i] << " ";
   cout << "\n";
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

Vector values before resize:
1.2 2.3 0.4 0.5 
Vector values after resize:
1.2 2.3 0.4 0.5 0.67 0.67 
廣告