C++程序:向数组追加元素


一个数组是一个线性顺序数据结构,用于在连续的内存位置存储同类数据。与其他数据结构一样,数组也必须具备以某种高效方式插入、删除、遍历和更新元素的功能。C++中的数组是静态的。C++中也提供了一些动态数组结构。对于静态数组,最多可以存储Z个元素。到目前为止,我们已经向其中插入了n个元素。在本文中,我们将学习如何在C++中将元素插入数组的末尾(也称为追加元素)。

通过示例理解概念

this关键字的使用方法如下

Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69]
After inserting 23 at the end, the array will look like this:
[10, 14, 65, 85, 96, 12, 35, 74, 69, 23]

在上面的例子中,假设我们有一个数组A,它最多可以容纳50个元素。因此,Z的值为50。现在假设一开始,我们有9个元素。因此,数组的大小n为9。要将另一个元素(例如,在我们的例子中为23)插入到数组的末尾,该元素将被放置在末尾,并且A中的元素数量将增加1。因此,n变为10。由于我们在末尾插入,因此该过程很简单。我们只需在所有元素之后添加新元素,而无需更改数组中任何现有元素的位置。现在让我们看看算法以及C++实现代码,以便更好地理解。

算法

  • 将数组A、元素个数n和将插入到A中的元素e作为输入。

  • 如果n < Z,其中Z是A中可以插入的最大位置数

    • A[n] = e

  • 结束if

  • 将n增加为n := n + 1

  • 返回数组A和新的大小n

示例

#include <iostream>
# define Z 50

using namespace std;

void displayArr(int arr[], int n){
   for( int i = 0; i < n; i++ ){
      cout << arr[ i ] << ", ";
   }
   cout << endl;
}
void insertAtEnd( int arr[], int &n, int e ){
   if( n < Z ) {
      arr[ n ] = e;
   }
   n = n + 1;
}

int main() {
   int arr[ Z ] = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
   int n = 12;
   
   cout << "Array before insertion: ";
   displayArr( arr, n );
   
   cout << "Inserting 58 at the end:" << endl;
   insertAtEnd( arr, n, 58 );
   
   cout << "Array after insertion: ";
   displayArr( arr, n );
   
   cout << "Inserting 225 at the end:" << endl;
   insertAtEnd( arr, n, 225 );
   
   cout << "Array after insertion: ";
   displayArr( arr, n );
}

输出

Array before insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 
Inserting 58 at the end:
Array after insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 58, 
Inserting 225 at the end:
Array after insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 58, 225,

使用向量追加元素

向量是C++ STL提供的动态数据结构。我们也可以在向量中获得类似于数组的功能。在向量中,我们可以使用`**push_back()**`函数在末尾插入元素。`**push_back**`函数将新元素作为参数,并将该元素插入到给定向量的末尾。该算法很简单。我们不需要做任何特殊的事情,只需通过传递我们将要插入的新元素来调用给定向量对象的函数即可。让我们直接看看C++实现。

示例

#include <iostream>
#include <vector>
# define Z 50

using namespace std;

void displayArr( vector<int> v ){
   for( int i = 0; i < v.size() ; i++ ){
      cout << v[ i ] << ", ";
   }
   cout << endl;
}

vector<int> insertAtEnd( vector<int> A, int e ){
   A.push_back( e );
   return A;
}

int main() {
   vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};  
   cout << "Array before insertion: ";
   displayArr( A );
   
   cout << "Inserting 58 at the end:" << endl;
   A = insertAtEnd( A, 58 );
   
   cout << "Array after insertion: ";
   displayArr( A );
   
   cout << "Inserting 225 at the end:" << endl;
   A = insertAtEnd( A, 225 );
   
   cout << "Array after insertion: ";
   displayArr( A );
}

输出

Array before insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 
Inserting 58 at the end:
Array after insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 58, 
Inserting 225 at the end:
Array after insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 58, 225,

结论

数组是最简单的连续存储同类数据的数据结构之一。数组是一种数据结构。像其他数据结构一样,我们也可以轻松地插入、删除、更新和遍历数组元素。在本文中,我们看到了两种在末尾插入元素,换句话说,将元素追加到数组中的方法。在第一种方法中,我们使用C++中的静态数组。由于我们的目标是末尾位置,因此我们不需要移动数组中的任何元素,只需在最后一个索引处添加一个新元素,并为以后的使用增加总项目计数参数即可。在第二种情况下,我们使用向量。向量类似于C++中的普通数组,但它们是动态的。它会在需要时自动更新其总大小。C++ STL支持向量,它有一个名为push_back()的特殊函数,用于在末尾插入元素。但是,我们不能用这种直接的方法在开头添加元素。

更新于:2023年10月4日

44K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告