不使用vector<int*>
时间: 2024-12-23 15:13:01 浏览: 13
如果你不想使用`vector<int*>`,你可以改用`array`或手动管理内存,例如`new[]`和`delete[]`。这里是一个使用`array`的例子,同时保留之前的输入、排序和释放内存流程:
```cpp
#include <iostream>
#include <algorithm> // 包含sort函数
using namespace std;
const int arraySize = 10;
// 定义动态数组结构体,包含整数值和动态分配的内存
struct DynamicArray {
int value;
int* memory;
};
int main() {
DynamicArray arrays[arraySize];
for (int i = 0; i < arraySize; ++i) {
cout << "请输入第" << (i + 1) << "个整数: ";
cin >> arrays[i].value; // 用户输入值
arrays[i].memory = new int; // 动态申请内存
*arrays[i].memory = arrays[i].value; // 存储值
}
// 使用自定义比较函数降序排序
bool compare(const DynamicArray& a, const DynamicArray& b) {
return a.value > b.value;
}
sort(arrays, arrays + arraySize, compare);
cout << "排序后的数组: ";
for (const DynamicArray& arr : arrays) {
cout << *arr.memory << " ";
}
cout << endl;
// 释放内存
for (DynamicArray& arr : arrays) {
delete arr.memory;
}
// 清理结构体数组
for (int i = 0; i < arraySize; ++i) {
arrays[i].memory = nullptr;
}
return 0;
}
```
这个版本中,我们创建了一个名为`DynamicArray`的结构体,其中包含一个整数值和一个指向该值的指针。排序部分使用了自定义比较函数。
阅读全文