先决条件: C++中的数组,C++ STL中的向量
数组是存储在连续内存位置的项目的集合。它是将相同类型的多个项目一起存储。这使得通过每个元素的位置更容易访问存储在其中的元素。
向量被称为动态数组,具有在插入或删除元素时自动调整自身大小的功能,容器会自动处理它们的存储。
因此,向量数组是具有固定行数的二维数组,其中每行都是可变长度的向量。数组的每个索引都存储一个向量,可以使用迭代器遍历和访问该向量。
句法:
vector V[size];
例子:
vector A[5];
where A is the array of vectors of int of size 5
插入:向量数组的插入是使用push_back()函数的。
例如:
for i in [0, n) {
A[i].push_back(35)
}
在伪代码上方,将元素35插入到向量
遍历:向量数组中的遍历是使用迭代器执行的。
例如:
for i in [0, n) {
for(iterator it = A[i].begin();
it!=A[i].end(); it++) {
print(*it)
}
}
上面的伪代码使用开始迭代器A [i] .begin()和结束迭代器A [i] .end()在每个索引处遍历向量
下面是说明向量数组中插入的程序。
// C++ program to illustrate
// array of vectors
#include
#include
using namespace std;
// Declaring array of vectors
// globally
vector v[5];
// Function for inserting elements
// in array of vectors
void insertionInArrayOfVectors()
{
for (int i = 0; i < 5; i++) {
// Inserting elements at every
// row i using push_back()
// function in vector
for (int j = i + 1; j < 5; j++) {
v[i].push_back(j);
}
}
}
// Function to print elements in array
// of vectors
void printElements()
{
// Traversing of vectors v to print
// elements stored in it
for (int i = 0; i < 5; i++) {
cout << "Elements at index "
<< i << ": ";
// Displaying element at each column,
// begin() is the starting iterator,
// end() is the ending iterator
for (auto it = v[i].begin();
it != v[i].end(); it++) {
// (*it) is used to get the
// value at iterator is
// pointing
cout << *it << ' ';
}
cout << endl;
}
}
// Function to illustrate array
// of vectors
void arrayOfVectors()
{
// Inserting elements in array
// of vectors
insertionInArrayOfVectors();
// Print elements stored in array
// of vectors
printElements();
}
// Driver code
int main()
{
arrayOfVectors();
return 0;
}
输出:
Elements at index 0: 1 2 3 4
Elements at index 1: 2 3 4
Elements at index 2: 3 4
Elements at index 3: 4
Elements at index 4: