[英]Iteration pattern forth and back
我正在嘗試 go 通過一個列表,其中 n 是列表的長度,模式將是第一個元素 n,第二個元素,n-1,第三個元素,n-2 ...
這怎么可能?
您通常會使用兩個索引並重復需要做的事情兩次:
for (int lo = 0, hi = n - 1; hi <= lo; ++lo, --hi) {
doStuff(list.get(lo));
if (lo == hi) break; // don't handle a middle element twice.
doStuff(list.get(hi));
}
如果你真的需要一個跳動的單一索引,那是可能的但很難看:
for (int d = 0; d < n; ++d) {
int i = (d & 1) == 0 ? (d / 2) : (n - 1 - (d / 2));
doStuff(list.get(i));
}
如果這是一個常見的操作,你會想要定義一個隱藏丑陋之處的Iterator
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.