c++对数组进行添加、删除元素
时间: 2023-12-21 11:07:28 浏览: 71
在 C 语言中,数组的长度是固定的,无法直接添加或删除元素。但可以通过创建新的数组来实现添加或删除元素的效果。
添加元素:
1. 创建一个比原数组长度大 1 的新数组。
2. 将原数组的元素复制到新数组中。
3. 在新数组的末尾添加新元素。
示例代码:
```c
int old_array[] = {1, 2, 3};
int new_array[4];
int new_element = 4;
// 复制原数组到新数组
for (int i = 0; i < 3; i++) {
new_array[i] = old_array[i];
}
// 添加新元素
new_array[3] = new_element;
```
删除元素:
1. 创建一个比原数组长度小 1 的新数组。
2. 将原数组中需要保留的元素复制到新数组中。
示例代码:
```c
int old_array[] = {1, 2, 3};
int new_array[2];
int index_to_remove = 1;
// 复制原数组到新数组,跳过需要删除的元素
int new_index = 0;
for (int i = 0; i < 3; i++) {
if (i != index_to_remove) {
new_array[new_index++] = old_array[i];
}
}
```
相关问题
C++对数组进行增,删,改,清空
增加元素:
1. 在数组末尾添加一个元素:
```
arr.push(element);
```
2. 在数组开头添加一个元素:
```
arr.unshift(element);
```
3. 在指定位置添加一个元素:
```
arr.splice(index, 0, element);
```
删除元素:
1. 删除数组末尾的元素:
```
arr.pop();
```
2. 删除数组开头的元素:
```
arr.shift();
```
3. 删除指定位置的元素:
```
arr.splice(index, 1);
```
修改元素:
1. 修改指定位置的元素:
```
arr[index] = newElement;
```
2. 修改指定范围内的元素:
```
arr.splice(startIndex, num, newElement1, newElement2, ...);
```
清空数组:
1. 将数组的长度设为0:
```
arr.length = 0;
```
2. 使用splice方法删除所有元素:
```
arr.splice(0, arr.length);
```
12.c++编写一个动态数组类,包括基本功能:对数组的查找、添加/删除元素、 逆序等功能(可自行添加额外功能)。
下面是一个简单的动态数组类实现,包含了基本的查找、添加/删除元素、逆序等功能:
```c++
#include <iostream>
using namespace std;
class DynamicArray {
private:
int size;
int capacity;
int* data;
public:
DynamicArray(int capacity) {
this->size = 0;
this->capacity = capacity;
this->data = new int[capacity];
}
~DynamicArray() {
delete[] data;
}
int getSize() {
return size;
}
int getCapacity() {
return capacity;
}
bool isEmpty() {
return size == 0;
}
bool isFull() {
return size == capacity;
}
int get(int index) {
if (index < 0 || index >= size) {
cout << "Index out of bounds" << endl;
return -1;
}
return data[index];
}
void set(int index, int value) {
if (index < 0 || index >= size) {
cout << "Index out of bounds" << endl;
return;
}
data[index] = value;
}
void add(int value) {
if (isFull()) {
int* newData = new int[capacity * 2];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity *= 2;
}
data[size++] = value;
}
void insert(int index, int value) {
if (index < 0 || index > size) {
cout << "Index out of bounds" << endl;
return;
}
if (isFull()) {
int* newData = new int[capacity * 2];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity *= 2;
}
for (int i = size; i > index; i--) {
data[i] = data[i - 1];
}
data[index] = value;
size++;
}
void remove(int index) {
if (index < 0 || index >= size) {
cout << "Index out of bounds" << endl;
return;
}
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
size--;
}
void reverse() {
for (int i = 0; i < size / 2; i++) {
int temp = data[i];
data[i] = data[size - i - 1];
data[size - i - 1] = temp;
}
}
};
int main() {
DynamicArray arr(5);
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
arr.add(5);
cout << "Original array: ";
for (int i = 0; i < arr.getSize(); i++) {
cout << arr.get(i) << " ";
}
cout << endl;
arr.insert(2, 6);
cout << "After inserting 6: ";
for (int i = 0; i < arr.getSize(); i++) {
cout << arr.get(i) << " ";
}
cout << endl;
arr.remove(3);
cout << "After removing element at index 3: ";
for (int i = 0; i < arr.getSize(); i++) {
cout << arr.get(i) << " ";
}
cout << endl;
arr.reverse();
cout << "After reversing: ";
for (int i = 0; i < arr.getSize(); i++) {
cout << arr.get(i) << " ";
}
cout << endl;
return 0;
}
```
在这个示例中,我们定义了一个 `DynamicArray` 类,它包含了一些基本的成员函数,如获取数组大小、获取数组容量、判断数组是否为空或满、获取指定位置的元素、设置指定位置的元素、添加元素、插入元素、删除元素、逆序等功能。
在 `add` 函数中,当数组已满时,我们将数组的容量增加为原来的两倍,并重新分配内存空间;在 `insert` 函数中,我们先判断插入位置是否合法,再判断数组是否已满,如果已满则扩容,最后将插入位置后面的元素依次向后移动一个位置,并将要插入的元素放到指定位置;在 `remove` 函数中,我们先判断删除位置是否合法,然后将删除位置后面的元素依次向前移动一个位置,并将数组大小减一;在 `reverse` 函数中,我们将数组中的元素倒序排列。
最后,在 `main` 函数中,我们创建了一个 `DynamicArray` 对象,并对它进行了一些基本操作,如添加元素、插入元素、删除元素、逆序等,并输出了每次操作后的结果。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)