C++ vector::clear() 函式



C++ `vector::clear()` 函式用於移除向量中的所有元素,它在 <vector> 庫中定義。當向量為空時,其大小為 0。向量是一種有用的資料結構,其功能類似於動態的一維陣列。`clear()` 函式的時間複雜度為線性。

呼叫此函式並不保證會發生重新分配,也不保證向量的容量會改變。它會使指向所包含元素的任何迭代器、引用或指標失效。任何越界迭代器也會失效。`clear()` 函式具有線性複雜度,它隨著容器大小而變化。

語法

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

void clear() noexcept;

引數

它不包含任何引數。

示例 1

讓我們考慮以下示例,我們將使用 `clear()` 函式並檢索輸出,該輸出在使用 `clear()` 之前和之後列印向量中的總元素個數。

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

int main(){
   vector<int> tutorial = {12,23,34,45,56,67};
   unsigned int vectorsize = tutorial.size();
   cout << "Before clear() :" << vectorsize << endl;
   tutorial.clear();
   vectorsize = tutorial.size();
   cout << "After clear(): " << vectorsize << endl;
   cout << endl;
   return 0;
}

輸出

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

Before clear() :6
After clear(): 0

示例 2

在以下示例中,我們將使用 `clear()` 函式,並觀察到在使用 `clear()` 之後向量的容量保持不變。

#include <iostream>
#include <algorithm>
#include <vector>

int main(){
   std::vector<int> tutorial{11,22,33,44,55};
   auto print = [](const int& n) {
      std::cout << " " << n;
   };
   std::cout << "Before clear:";
   std::for_each(tutorial.begin(), tutorial.end(), print);
   std::cout << "\nSize=" << tutorial.size() << ", Capacity=" << tutorial.capacity() << '\n';
   std::cout << "Clear\n";
   tutorial.clear();
   std::cout << "After clear:";
   std::for_each(tutorial.begin(), tutorial.end(), print);
   std::cout << "\nSize=" << tutorial.size() << ", Capacity=" << tutorial.capacity() << '\n';
}

輸出

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

Before clear: 11 22 33 44 55
Size=5, Capacity=5
Clear
After clear:
Size=0, Capacity=5

示例 3

考慮以下示例,由於我們聲明瞭帶有常量的向量,這使得 `clear()` 函式會丟擲錯誤。

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

int main(){
   const vector<char> x = {'W', 'E', 'L', 'C', '0', 'M','E'};
   for (vector<char>::const_iterator it = x.begin(); it != x.end(); it++)
      cout << *it << ' ';
   cout << endl;
   x.clear();
   for (vector<char>::const_iterator it = x.begin(); it != x.end(); it++)
      cout << *it << ' ';
   cout << endl;
   return 0;
}

輸出

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

main.cpp:10:12: error: passing 'const std::vector<char>
廣告