具有公共内存区域的类似数组的对象
Array-like objects with common memory region
我希望有类似数组的对象,支持指向同一内存区域的多个数组。带有旧原始指针的东西看起来像这样:
#include <iostream>
int main()
{
double* array{new double[100]};
double* subarray{array + 5};
std::cout << array[5] << std::endl;
subarray[0] = 33.0;
std::cout << array[5] << std::endl;
delete[] array;
return 0;
}
看起来像的东西
Foo array{100, 3.0};
Foo subarray{array.slice(40,50)};
assert(&array[43] == &subarray[3]);
据我所知,像std::vector
和std::valarray
这样的事情需要将小节复制到一个新对象中,这不是我想要的。我找不到其他任何东西。我很高兴实施自己的解决方案,但是有什么我可以使用的吗?
现代C++做这种事情的方法是使用一对迭代器。我相信 Boost 有一个库基本上可以做你所描述的,但所有的 STL 算法都在迭代器对上工作,以允许你做你所描述的。因此,如果你想谈论std::d eque从元素10到元素20(当然是半开放(的范围,你可以使用std::begin(d) + 10
来std::begin(d) + 20
作为你的范围。
相关文章:
- 销毁C++中动态分配的内存(数组对象)
- 数组对象的生存期是否在重用其元素存储时结束?
- 为什么顶点数组对象会导致错误?
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- OpenGL 顶点数组对象与 tinyobjloader
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- C++ RapidJson 帮助反序列化数组对象
- ptrdiff_t可以表示指向同一数组对象元素的指针的所有减法吗?
- 检查成员函数是否返回临时对象或数组对象
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++17 std::shared_ptr<> 类数组对象的重载运算符 []
- 添加两个具有运算符重载的数组对象,从而导致分段错误
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 使用相同的数据填充数组对象或使用指针
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 如何将2d数组对象传递给c++中的函数
- ReferenceTable溢出(jni-android),数组对象释放