簡體   English   中英

來回迭代模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM