不带指针的动态数组 C++
dynamic array c++ without pointer
是否可以在不使用指针的情况下在 c++ 中创建动态数组(int array[] 而不是 int* 数组)?
即像这样:
int size = 5;
int array[];
array = new int{size};
for (int i = 0; i < size; i++)
{
array[i];
}
是的,当然,这是可能的:
#include <iostream>
int main()
{
[](int array[] = new int[10]) {
std::cout << "array = " << array << "n";
delete[] array;
}();
}
简而言之,没有。编译器需要知道数组的大小,因此要在 c++ 中使用堆栈分配的数组,必须在声明中指定它。我建议你看看 STL Vector 类。
您可以使用引用来执行此操作:
#include <iostream>
using namespace std;
int main()
{
int& val = *(new int[2]);
val = 1;
*(&val + 1) = 2;
cout << val << ' ' << *(&val+1) << 'n';
delete [] (&val);
return 0;
}
但如您所见,这不是很好读,并且很容易出错。 最好的办法是只使用std::vector
。
不可以,但您可以使用库中std
动态类型,例如 std::vector
。
该类型std::vector
与数组非常相似。
看看这个std::vector。
int array[];
必须具有自动存储持续时间(在函数或类范围内),并且不能具有动态存储持续时间。
您可以将指针隐藏在类中,例如 std::vector<int>
。
你可以做类似的事情
int (&array)[5] = reinterpret_cast<int(&)[5]>(*new int[5]);
删除:delete [] array;
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '