簡體   English   中英

具有公共存儲區的類數組對象

[英]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::vectorstd::valarray類的東西需要將子節復制到一個新對象中,這不是我想要的。 我找不到其他東西。 我很高興實現自己的解決方案,但是有什么可以使用的嗎?

現代C ++進行此類操作的方法是使用一對迭代器。 我相信Boost有一個基本上可以完成您所描述內容的庫,但是所有STL算法都可以在成對的迭代器上工作,以使您可以執行所描述的內容。 因此,如果您要談論std :: deque的從元素10到元素20(當然是半開)的范圍,請使用std::begin(d) + 10std::begin(d) + 20作為您的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM