gpt4 book ai didi

c++ - 如何设置数组中元素的地址以指向另一个数组中的特定元素?

转载 作者:行者123 更新时间:2023-11-28 02:59:52 25 4
gpt4 key购买 nike

假设我们有一个包含 10 个元素的数组,我们想从中提取一个包含前三项和后三项的 6 元素子数组。我不希望提取的子数组是一个独立的数组,但我希望它的项指向内存中与原始数组中的相应项相同的位置。我该怎么做?

最佳答案

您可以使用一个指针数组来指向另一个数组中的元素:

int a[10] = { 5, 3, 7, 4, 9, 2, 0, 3, 3, 6 };
int* b[6];
b[0] = &a[0];
b[1] = &a[1];

等等。您必须确保 a 至少与 b 一样长。

更惯用的解决方案可能是使用范围类型来保存指向第一个和最后一个感兴趣元素的指针。该范围将以与标准库容器相同的方式进行迭代。例如,请参阅 boost.range,或者您可以使用指针作为迭代器推出一个最小的简单版本。这将满足您的用例。例如:

struct range
{
typedef const int* const_iterator;
const_iterator begin() const {return begin_;}
const_iterator end() const { return end_; }
range(const int* begin, const int* end) : begin_(begin), end_(end) {}
std::size_t size() const {return end_ - begin_ };
private:
int* begin_;
int* end_;
};

然后

int a[10] = { 5, 3, 7, 4, 9, 2, 0, 3, 3, 6 };
range b(&a[0], &a[3);
for (range::const_iterator i = b.begin(); i != b.end(); ++i)
std::cout << *i << " ";
std::cout << std::endl;

关于c++ - 如何设置数组中元素的地址以指向另一个数组中的特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21085578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com