[英]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 :: deque的從元素10到元素20(當然是半開)的范圍,請使用std::begin(d) + 10
到std::begin(d) + 20
作為您的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.