コメントが長くなるので改めて。
アクアさん:
> C言語類を知らない私が、パッと見て読み解けるのは後者です。
そう、ソコよ。
// ↓後者ってばコレね。
int array[N];
int sum = 0;
for (int i = 0; i < N; ++i ) {
sum += array[i];
}
配列だとこうでしょう。ならば数珠繋ぎのリストなら:
// リスト構造のノードを辿って総和を求める
link* p = head;
int sun = 0;
while ( p != 0 ) {
sum += p->data;
p = p->next;
}
二進木なら:
int sum_tree(node* p) {
if ( p == 0 ) {
return 0;
} // else
return p->data + sum_tree(p->left) + sum_tree(p->right);
}
int sum = sum_tree(head);
こんな感じかな。
ではSTLならどうなるかっちゅーと:
int sum = std::accumulate(intarray, intarray+N, 0); // 配列
int sum = std::accumulate(intlist.begin(), intlist.end(), 0); // リスト
int sum = std::accumulate(intset.begin(), intset.end(), 0); // 二進木
"パッと見て読み解ける"のはむしろコッチじゃないか、ってことになるですよ♪
「どうやってるか」ではなく「ナニをやってるか」を読み解くのなら。