如何处理C 中的灵活数组
How to handle flexible Arrays in C++
上下文
所以我一直在玩C/C 的数组,试图创建数组可以动态添加和删除其元素。
当然,我认为C中的灵活数组成员功能将是适当的方法。因此,我开始进行实验,如下面的代码所示:
#include <cstdio> // printing stuff
#include <stdlib.h> // memory allocation stuff
// The array type
template <typename structType>
struct Array {
private:
// The structure containing the F.A.M.
struct ArrayStructure { size_t length = 0; structType array[]; }
*arrayStructurePointer, arrayStructure;
constexpr inline static void add() {}
public:
// Constructor
template <typename... types, typename = structType>
explicit Array(types... elements) {
this -> arrayStructurePointer =
(ArrayStructure*) malloc(sizeof(structType));
this -> arrayStructurePointer = &(this -> arrayStructure);
this -> add(elements...);
}
// Destructor
~Array() {
free(this -> arrayStructurePointer);
free(this -> arrayStructure.array);
}
// Add stuff to the array
inline void add(structType element) {
this -> arrayStructurePointer =
(ArrayStructure*) realloc(this -> arrayStructurePointer, sizeof(this -> arrayStructure));
this -> arrayStructurePointer = &(this -> arrayStructure);
this -> arrayStructure.array[this -> arrayStructure.length] = element;
this -> arrayStructure.length += 1;
}
template <typename... types, typename = structType>
inline void add(structType element, types... elements) {
this -> add(element);
this -> add(elements...);
}
// Query an element in the array
constexpr inline structType operator [](size_t index) { return *(this -> arrayStructure.array + index); }
};
int main(int argc, char* argv[]) {
Array<int> array(1, 0, 1);
printf("Array [0]: %in", array[0]);
printf("Array [1]: %in", array[1]);
printf("Array [2]: %in", array[2]);
return 0;
}
这一点是我要(可能)vector
的工作方式及其相关的挑战。
问题
我只达到了数组中添加元素,但即使这样,当我编译和运行代码时,当程序退出之前结束时会有大延迟(我认为这是因为内存泄漏)。
问题
所以,问题:我想断言我正在遵循正确的路径,以创建推动&amp;的动态阵列通过要求如何构建动态数组来应要求。
如何正确构建动态数组?或
如何构建自己的 vector
结构? or
是否有任何好的资源/PDF教导如何制作动态数组(或 vector
')?
只需将std::vector
用于可变长度数组即可。它比999/1000情况下的手卷解决方案更好,更可靠地解决了这个问题。
相关文章:
- 使用对象数组对 SFML 进行动画处理
- 如何像在 C++ 中处理数组一样对 .txt 文件中的字符进行寻址?
- 有人可以解释一下吗?这是关于数组和数组内部 if 语句的一些处理
- 我如何处理有关输入的字符串大小超过字符数组设置大小的错误?
- 处理数组时make_unique和make_shared之间的差异
- 如何以这种方式处理字符串数组
- 数组 C++ 上的异常处理程序
- 为什么我的代码无法处理大型数组输入(>10000)?
- 我正在努力处理多维数组输入和输出,我管理输入,但是打印无法按计划工作
- C++ rezing 动态数组最多可以处理一定数量的元素,但在某些时候会崩溃并显示错误 (0XC0000005)
- 我如何处理数组的单个元素
- 如何在 c++ 预处理器宏中处理数组元素?
- 异常 尝试初始化动态数组时未处理
- 为什么在指针和数组的情况下,字符数组的处理方式不同
- 是否可以像数组一样处理 std::vector
- C++字符数组错误处理
- std::vector可以像数组一样处理吗?
- c++中指针数组的处理和删除
- SSE对元素数量不是四的倍数的数组进行处理
- 将我的服务器响应char数组转换为wchar_t数组是处理客户端收到的服务器消息的正确方法吗?