21xrx.com
2025-03-25 08:56:49 Tuesday
文章检索 我的文章 写文章
C++如何删除元素:简单代码实现
2023-06-22 19:40:37 深夜i     18     0
C++ 删除元素 简单代码 实现

在C++语言中,删除元素是一项常见的操作。在数组、向量和链表等数据结构中,我们都需要经常删除元素。本文将会介绍C++中如何方便快速地删除元素,以及一些简单的代码实现。

对于数组中的元素删除,我们需要将被删除元素后面的所有元素向前移动一位,并重置数组的大小。在C++中,可以使用标准库中的vector容器进行操作。vector是一个动态数组,能够在运行时动态地分配内存。我们可以使用vector中的erase()函数来删除元素,达到简单和高效的操作。

下面是删除vector中第3个元素的实现代码:

#include<vector>
using namespace std;
int main(){
  //初始化vector
  vector<int> v = 3;
  //使用erase()删除元素
  v.erase(v.begin()+2);
  //输出 vector 元素
  for (auto i = v.begin(); i != v.end(); ++i)
    cout << *i << " ";
  return 0;
}

以上代码使用erase()函数删除vector中下标为2的元素,并用auto循环输出剩余元素。这里需要注意,vector的下标是从0开始计算的,因此删除第3个元素时应指定下标为2。

对于链表中的元素删除,我们需要将待删除节点的前一个节点的指针指向待删除节点的下一个节点,避免出现野指针。下面是链表删除节点的实现代码:

#include<iostream>
using namespace std;
struct Node {
  int data;
  Node* next;
};
//删除链表中指定节点
void deleteNode(Node* node) {
  //定义要删除节点的下一个节点
  Node* nextNode = node->next;
  //将下一个节点的值赋给待删除节点,并把待删除节点的next指针指向下下个节点
  node->data = nextNode->data;
  node->next = nextNode->next;
  //释放下一个节点
  delete nextNode;
}
int main() {
  //初始化链表
  Node* head = new Node{ 1, new Node{ 2, new Node{ 3, new Node nullptr } } };
  //删除链表中第2个节点
  deleteNode(head->next);
  //输出链表
  Node* p = head;
  while (p)
    cout << p->data << " ";
    p = p->next;
  
  return 0;
}

以上代码使用deleteNode()函数删除链表中第2个节点。deleteNode()函数将待删除节点的下一个节点的值赋给待删除节点,并把待删除节点的next指针指向下下个节点,最后释放下一个节点。在main函数中,我们输出链表的每一个元素,确认该链表已经被正确修改。

总的来说,删除元素是C++中常见的操作之一,在不同的数据结构中实现稍有不同。在编写删除元素的代码时,我们需要了解相关数据结构的特性,并采用针对性的实现方式,以提高代码的可读性和效率。

  
  

评论区

请求出错了