📜  C++ STL中的向量数组

📅  最后修改于: 2021-04-29 12:52:07             🧑  作者: Mango

先决条件: 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插入到向量 A [n]的每个索引处。

遍历:向量数组中的遍历是使用迭代器执行的。

例如:

for i in [0, n) {
   for(iterator it = A[i].begin(); 
       it!=A[i].end(); it++) {
      print(*it)
    }
}

上面的伪代码使用开始迭代器A [i] .begin()和结束迭代器A [i] .end()在每个索引处遍历向量 A [n] 。为了访问元素,它使用(* it)作为迭代器,这些指针指向向量 A [n]中的元素。

下面是说明向量数组中插入的程序。

// 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: