我有下面的代码
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)
提前致谢
这是一个简单的数学问题。 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)
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |