C++ 以逆序访问数组

Leo*_*oso -3 c++ arrays

我有下面的代码

int array[3] = { 10, 15, 20};
Run Code Online (Sandbox Code Playgroud)

如何以相反的顺序访问其元素,而不反转索引。我的意思是索引0将返回最后一个元素(20),索引2将返回第一个元素(10)。

array[0] // it would return 20
Run Code Online (Sandbox Code Playgroud)

提前致谢

Adr*_*hum 5

这是一个简单的数学问题。 array[n]从后面看简直就是array[array_size - 1 - n]从头开始。

就我个人而言,如果需要在多个地方使用类似的逻辑,我将为数组制作一个小包装器。

伪代码如下所示:

template <T> class reverse_array {
public:
    reverse_array(T* array, size_t size)
        : m_array(array), m_size(size) {}

    operator T& [] (size_t index) {
        return m_array[m_size - 1 - index];
    }

    operator const T& [] (size_t index) const {
        return m_array[m_size - 1 - index];
    }

private:
    T* m_array;
    size_t m_size;
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以做

int quote[3] = { 10 , 15 ,20};
reverse_array quote_in_reverse(quote, 3);

int result = quote_in_reverse[0]; // result = 20
Run Code Online (Sandbox Code Playgroud)