Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C++から見たObjective-C - 高速列挙

タグ: C++ Objective-C
NSArray *array = [NSArray arrayWithObjects:
        @"One", @"Two", @"Three", @"Four", nil];

for (NSString *element in array) {
    NSLog(@"element:%@", element);
}

例は公式から引用
「for」の評価式部分に「in」を加えるという、かなり思い切った構文。
AppleScriptが紛れ込んだかと思った。
でもまあ、解りやすいし、便利。
名前に「高速」と付いているくらいだし、普通の列挙よりも速いのだろう。

C++でこれと同じことをするのはBoost.Foreach

using namespace boost::assign; // Boost.Assignmentを使う

std::vector<std::string> strings;
strings += "One", "Two", "Three", "Four";

BOOST_FOREACH(const std::string& str, strings)
{
	std::cout << "element:" << str << std::endl;
}

あとは、これらとは少し趣が異なるが似たものとして、標準C++には std::for_each() や std::copy() などの「アルゴリズム」が用意されている。

using namespace boost::assign; /

std::vector<std::string> strings;
strings += "One", "Two", "Three", "Four";

std::copy(
	strings.begin(),
	strings.end(),
	std::ostream_iterator<std::string>(std::cout, "\n")
);
スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/118-e4a759ac
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。