如何实现删除数组的功能?
How to implement the function of deleting an array?
帮助添加删除功能,我不确定内存是否自动清除。
template<class T1>
auto auto_array(T1&& _Size) {
return new int64_t[_Size]{};
}
template <class T1, class... T2>
auto auto_array(T1&& _Size, T2&&... _Newsize)
{
auto result = new decltype(auto_array(_Newsize...))[_Size];
for (int64_t i = 0; i < _Size; ++i) {
result[i] = auto_array(_Newsize...);
}
return result;
}
int main() {
auto _Tor = auto_array(3, 2, 7);
return 0;
}
请不要提供矢量,这是一个神圣的。 我已经有一个带有向量的代码。
首先,我不得不说,这不是实现此类功能C++方法。使用 STL 容器或 RAII 概念。
您必须实现删除函数模板来清理分配的内存。您必须将大小传递给此函数,因为指针不知道大小:
#include <cstdint>
template<class T1>
auto auto_array(T1&& _Size) {
return new int64_t[_Size]{};
}
template <class T1, class... T2>
auto auto_array(T1&& _Size, T2&&... _Newsize)
{
auto result = new decltype(auto_array(_Newsize...))[_Size];
for (int64_t i = 0; i < _Size; ++i) {
result[i] = auto_array(_Newsize...);
}
return result;
}
template <class T1, class T2>
void delete_auto_array(T1&& ptr, T2&&)
{
delete[] ptr;
}
template <class T1, class T2, class... T3>
void delete_auto_array(T1&& ptr, T2&& _Size, T3&&... _Newsize)
{
for (int64_t i = 0; i < _Size; ++i) {
delete_auto_array(ptr[i], _Newsize...);
}
delete[] ptr;
}
int main() {
auto _Tor = auto_array(3, 2, 7);
delete_auto_array(_Tor, 3, 2, 7);
return 0;
}
相关文章:
- 如何实现删除数组的功能?
- 借助功能将 2D 转换为 1D 数组
- 将 2D 数组传递给大小为变量的功能
- 为什么必须动态分配扩展数组才能使此功能正常工作C++
- C++中用于结构的纯数组的类似于TableView/DataFrame的通用功能
- 共享_ptr中多功能数组的类型是什么
- 编写一个递归功能,该功能采用数组并以相反顺序显示元素,而无需在末尾启动数组的索引
- 如何正确填充并将动态数组发送到Delphi中C 中的功能
- 返回处理数组的INT功能
- exc_bad_access on for loop(数组功能指针)
- 如何将浮子数组阵列从Swift传递到C 功能
- 如何将搜索功能添加到数组中
- 可用于任何大小的数组的功能
- 在堆中创建功能指针的数组
- 使用指针在功能中的数组中添加/删除元素
- 创建一个C 模板功能,该功能将返回特定大小的std ::数组
- 二次代数建议数组等返回功能
- (C )创建可以从功能访问的动态全局数组/向量
- C 2D数组功能
- c++容器集+数组功能