gpt4 book ai didi

c++ - 我应该返回指向数组或特定元素开头的指针吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:41 24 4
gpt4 key购买 nike

我经常遇到这样的情况,我有一个数组成员变量,而外部函数需要访问它的元素。我们以下面的代码为例:

class example_t
{
protected:
int* array;
size_t size;

public:
example_t(size_t size = 100) : size(size)
{
array = new[size];

// .. fill the array ..
}

~example_t()
{
delete[] array;
}

size_t get_size(void) const { return size; }
int const * get_array(void) const { return array; }
int get_array_element(size_t n) const { return array[n]; }
};

哪个接口(interface)应该是访问数组的首选方法get_array()[n]get_array_element(n) ?我试图在这里考虑优化器消除重复调用的样式和可能性,例如如果 array将一些索引存储在不同的数组中,我们希望计算

example_t subset(1000);
for (int i = 0; i < subset.get_size(); i++)
{
result[subset.get_array_element(i)] = f(input[subset.get_array_element(i)]);
}

然后人们希望编译器消除重复调用。 界面的选择会对可能的优化产生任何影响吗?

注意:我知道我可以使用 std::vector<int> array ,这只是一个例子。

最佳答案

这完全取决于您的代码应该做什么,并且可能对优化根本没有影响。您的类加载指针并取消引用它,或者您的调用站点这样做。无论哪种方式,如果您在循环中执行此操作,结果都是完全相同的。您应该对其进行测量以确保万无一失,但我很惊讶地发现这里有任何差异。

关于c++ - 我应该返回指向数组或特定元素开头的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27132632/

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