21xrx.com
2024-05-20 08:35:33 Monday
登录
文章检索 我的文章 写文章
C++如何从对象数组中删除元素
2023-07-13 05:26:51 深夜i     --     --
C++ 对象数组 删除 元素

在C++程序中,对象数组是一种常见的数据结构,它可以存储多个相同类型的对象。在一些情况下,我们需要从对象数组中删除元素。本文将介绍C++如何从对象数组中删除元素。

一、使用vector容器

vector容器是C++中的一种动态数组,它可以根据需要动态地调整大小,因此可以方便地添加或删除元素。使用vector容器可以很容易地从对象数组中删除元素。具体代码如下:


#include <iostream>

#include <vector>

using namespace std;

class MyClass {

public:

  MyClass(int n) : number(n) {}

  int number;

};

int main() {

  vector<MyClass> myVector;

  myVector.push_back(MyClass(1));

  myVector.push_back(MyClass(2));

  myVector.push_back(MyClass(3));

  // 删除第二个元素

  myVector.erase(myVector.begin() + 1);

  // 打印剩余元素

  for (int i = 0; i < myVector.size(); i++) {

    cout << myVector[i].number << endl;

  }

  return 0;

}

输出结果为:


1

3

二、使用指针

如果我们使用指针来实现对象数组,那么从对象数组中删除元素的步骤比较繁琐。我们需要先将需要删除的元素指针所指向的空间释放,然后将该元素之后的所有元素向前移动一个位置。具体代码如下:


#include <iostream>

using namespace std;

class MyClass {

public:

  MyClass(int n) : number(n) {}

  int number;

};

int main() {

  MyClass* myArray = new MyClass[3]{ MyClass(1),MyClass(2),MyClass(3) };

  // 删除第二个元素

  int index = 1;

  delete myArray[index];

  for (int i = index; i < 2; i++) {

    myArray[i] = myArray[i + 1];

  }

  // 打印剩余元素

  for (int i = 0; i < 2; i++) {

    cout << myArray[i].number << endl;

  }

  delete[] myArray;

  return 0;

}

输出结果为:


1

3

三、使用STL算法

STL算法也提供了一些函数来删除元素,比如remove()、remove_if()、unique()等函数。但是这些函数只是将需要删除的元素置于容器的末尾,并不会真正删除元素,因此通常需要结合erase()函数来使用。使用STL算法可以方便地从对象数组中删除元素。具体代码如下:


#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

class MyClass {

public:

  MyClass(int n) : number(n) {}

  int number;

};

int main() {

  vector<MyClass> myVector;

  myVector.push_back(MyClass(1));

  myVector.push_back(MyClass(2));

  myVector.push_back(MyClass(3));

  // 删除第二个元素

  myVector.erase(remove_if(myVector.begin(), myVector.end(), [](MyClass& c)

    return c.number == 2;

  ), myVector.end());

  // 打印剩余元素

  for (int i = 0; i < myVector.size(); i++) {

    cout << myVector[i].number << endl;

  }

  return 0;

}

输出结果为:


1

3

综上所述,我们介绍了C++如何从对象数组中删除元素。使用vector容器可以方便地添加或删除元素,使用指针则需要手动处理元素的位置关系,而使用STL算法则可以利用现成的函数来简化代码。在实际开发中,我们应根据具体情况选择最适合自己的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复