ブログは死なず、ただ放置されるのみ。

終わっちゃいましたね。

C++,Java,Rubyのイテレータ

これまで毛嫌いしていたC++なのだが、仕事でやむなくvectorをiteraterで操作してみたら、それはそれで結構面白いと思ったので、Javaでも書いてみた。サンプルは vector(ArrayList) に 0〜9の値を突っ込んだあと、イテレータで回って5未満のものを削除し、結果を標準出力に表示するもの。

IteratorTest.cpp:

#include  <vector>
#include  <iostream>

using namespace std;

int main (
	int  argc,
	char **argv
) {

	vector<int> v;

	for (int i=0; i<10; i++) {
		v.push_back(i);
	}

	vector<int>::iterator p = v.begin();
	while (p != v.end()) {
		if (*p < 5) {
			v.erase(p);
		} else {
			p++;
		}
	}

	for (int i=0; i<v.size(); i++) {
		cout << v[i] << endl;
	}

	exit (0);
}

IteratorTest.java

import java.util.*;

class IteratorTest {

	public static void main (String args[]) {
		ArrayList l = new ArrayList();
		for (int i=0; i<10; i++) {
			l.add(new Integer(i));
		}

		Iterator i = l.iterator();
		while(i.hasNext()){
			Integer num = (Integer)i.next();
			if(num.intValue() < 5) {
				i.remove();
			}
		}

		i = l.iterator();
		while(i.hasNext()){
			System.out.println (i.next());
		}

	}
}

IteratorTest.rb

#!/bin/env ruby

a = []
for i in 0..10
	a << i
end

a.delete_if do |i|
	true if i < 5
end

a.each do |i|
	print i, "\n"
end