HOWTO · C++
在 C++ 中初始化二維向量
本文是關於使用以及如何在 C++ 中初始化二維向量的程式設計指南。
這個簡短的程式設計教程是關於在 C++ 中使用 2D 向量的。
在進入二維向量之前,我們將首先快速介紹向量及其在 C++ 中的使用。然後,我們將繼續討論多維向量及其使用。
C++ 中的向量
向量的作用與動態陣列完全一樣,具有在插入或刪除元素時自動調整自身大小的附加功能。向量可以儲存同質元素(即相似資料型別的元素)。
向量可以通過新增和刪除自動調整其容器或儲存的大小。
向量的所有成員都儲存在記憶體中。每個下一個元素都與前一個元素相鄰,因此可以通過迭代器輕鬆訪問它。
當新增一個新元素時,它被放置在最後,並且每次插入需要不同的時間,因為它首先檢查記憶體是否可用。如果記憶體不可用,它首先分配一些新記憶體,然後將元素插入向量中。
另一方面,從最後一個元素移除一個元素需要恆定的時間,因為它不會在每次移除時執行調整大小。
在 C++ 中初始化向量
我們在 C++ 標準模板庫 (STL) 中有向量庫檔案。因此,要使用向量,我們需要為其包含所需的標頭檔案,如下所示:
#include <vector>
要宣告向量,請遵循以下語法:
vector<int> v1;
請注意,我們不需要指定向量的大小,因為向量可以在需要時動態自動增長其大小。我們可以使用初始化列表或統一初始化來初始化向量。
這兩種方法在下面的示例中進行了演示:
vector<int> vec1 = {21, 22, 23, 24, 25}; // initializer list method
vector<int> vec2{21, 22, 23, 24, 25}; // uniform initialization
如果我們想用相同的值填充整個向量,還有另一種初始化向量的方法。如下所示:
vector<int> vec3(4, 11);
這將初始化一個大小為 4 的向量,所有元素的值將是 11,如下所示:{11,11,11,11}。
此外,如果我們在宣告向量時沒有在向量中輸入資料,我們可以稍後使用函式 push_back 新增它。這個函式的語法是:
vec1.push_back(value);
這將插入該值作為向量的最後一個元素。
在 C++ 中訪問向量的值
向量中有一些迭代方法。
| 函式 | 目的 |
|---|---|
begin() |
該函式返回一個指向向量第一個元素的迭代器指標。 |
end() |
這個函式返回一個指向向量最後一個元素的迭代器指標。 |
size() |
此函式返回向量的總大小,這意味著有多少元素。 |
at(p) |
該函式返回指向向量中位置 p 處元素的指標。 |
empty() |
此函式檢查向量是否為空。 |
以下程式碼片段演示了這些功能:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec1;
for (int j = 1; j <= 5; j++) vec1.push_back(j + 1);
cout << "Size: " << vec1.size() << endl;
cout << "Output of begin and end functions: ";
for (auto a = vec1.begin(); a != vec1.end(); ++a) cout << *a << " ";
cout << endl;
cout << "Element at position 3: " << vec1.at(3) << endl;
return 0;
}
輸出:
Size: 5
Output of begin and end functions: 2 3 4 5 6
Element at position 3: 5
在 C++ 中初始化二維向量
與二維陣列一樣,二維向量也是向量的向量。這樣一個向量的每個元素都是一個向量本身。
就像在 Java 鋸齒狀陣列中一樣,我們可以在 2D 向量的每個位置都有一個多尺寸向量。這就像一個具有一定數量的行和列的矩陣。
不同之處在於它可以在每行中具有可變數量的列。
宣告語法:
vector<vector<int>> vec1{{1, 1, 0}, {0, 2}, {2, 1, 3}};
因為它是一個二維結構,我們需要兩個迴圈來遍歷這個向量——一個迴圈遍歷行,內迴圈遍歷列。
for (int a = 0; a < vec1.size(); a++) {
for (int b = 0; b < vec1[a].size(); b++) cout << v1[a][b] << " ";
確保 size() 函式不返回向量中的元素總數。相反,它返回此向量中的向量總數。
我們還可以通過指定行數和列數來初始化這個向量,如下所示:
int rows = 3;
int columns = 4;
vector<vector<int>> vec1(rows, vector<int>(columns));
讓我們看看建立二維向量的完整程式碼:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int rows = 3;
int columns = 4;
vector<vector<int>> vec(rows, vector<int>(columns));
for (int a = 0; a < rows; a++) // loop for initializing the vector
{
for (int b = 0; b < columns; b++) {
vec[a][b] = a * b;
}
cout << endl;
}
for (int a = 0; a < rows; a++) // loop for displaying the values of vector
{
for (int b = 0; b < columns; b++) {
cout << vec[a][b] << " ";
}
cout << endl;
}
return 0;
}
輸出:
0 0 0 0
0 1 2 3
0 2 4 6