C++中向量相對於陣列的優勢
這裡我們將看到C++中向量相對於陣列的一些優勢和劣勢。
向量是一個模板類。這是C++獨有的構造。陣列是內建的語言構造。陣列存在於不同的語言中。
向量被實現為具有列表介面的動態陣列,陣列可以使用靜態或動態方式以及原始資料型別來實現。
示例
#include<iostream> #include<vector> using namespace std; int main() { int array[10]; //statically allocated array int* arr = new int[10]; //dynamically allocated array vector<int> vec; }
陣列大小是固定的。建立陣列後,無法更改其大小。向量的尺寸是動態的。如果新增新元素,如果空間不足,它會為其建立新的空間,以及一些額外的空間。
如果陣列是動態分配的,則必須手動釋放它。但在向量中,我們不需要手動釋放它,它會自動釋放。
示例
#include<iostream> #include<vector> using namespace std; int main() { int* arr = new int[10]; //dynamically allocated array delete(arr); //deallocate manually vector<int> vec; //will be deallocated when variable is out of scope }
如果我們想獲得動態分配陣列的大小,我們不能輕易獲得大小。對於向量,我們可以以常數時間獲得大小。
如果我們想使用函式引數傳送一個數組,那麼我們必須傳送另一個大小或長度變數。如果我們傳送向量,則不需要傳遞其他變數。
除非我們使用動態分配的新陣列,否則我們不能返回一個數組,但我們可以從函式返回向量。
廣告