CodeZine(コードジン)

特集ページ一覧

Visual C++ 2008 Feature Pack: MFCの強化 (2)

Visual C++ 2008 Feature Packでの配列・正規表現・関数オブジェクト

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/07/11 14:00

標準C++ライブラリの拡張についてのドラフト「Technical Report 1(TR1)」は、将来標準の一部になると見込まれる新機能を数多く含んでおり、Visual C++ 2008 Feature Pack(Beta版)にも含まれています。インストール方法などは前回解説したので、今回は具体的な機能について概観してみます。

目次

はじめに

 マネージド言語の発展ペースに比べると、C++言語の変化は誠に遅々たるものに見えますが、C++での新機能の開発は着実なペースで以前と同様に続いており、全体的に見ればこの点こそがC++という言語の特徴と言えます。Visual Basicのような、トレンドに合わせてその姿形を変えていく言語と比べると、長い目で見ての安定性はC++の大きな特長の1つです。C++では、変更は安定したペースで、かつ十分に精査されたうえで起こります。現在進行中のC++言語への拡張は「C++0x Standard」と呼ばれており、この拡張では、ここ10年間に標準として承認された事項を反映しています。Technical Report 1(TR1)は、こうした標準化プロセスでの1つの中間段階であり、最終的には標準の一部になると見込まれる新機能を数多く盛り込んでいます。

 このMFC機能パックとそのインストールについては以前の記事である程度触れたので、そこで述べた説明やヒントは、ここでは繰り返さないでおきます。

STLの配列

 これまでのSTLコンテナのコレクションに欠けていた最も重要な機能の1つは、固定長の配列です。Cスタイルの配列や、vector、サードパーティーのライブラリを使用するなど、代替となる手法は数多くありますが、一般のC++プログラマのニーズを考えれば、固定長配列をSTLに追加することは必然です。今回新たに追加された配列型コレクションの使い方は非常にシンプルです。配列の長さをテンプレートのパラメータとして指定すると、そのコレクションはSTLのvectorコレクションと大変よく似た動きをするようになります。

#include <array>
#include <iostream>
#include <string>

std::tr1::array<int, 3> intArray = {4, 8, 10};

std::tr1::array<int, 3> intArray2 = {4, 8};
intArray2[2] = 10;

std::cout << ((intArray == intArray2)?
   std::string("Arrays are equal"):
   std::string("Arrays aren't equal")
);

std::cout << std::endl;

for (std::tr1::array<int, 3>::const_iterator it =
   intArray2.begin();
   it != intArray2.end();
   ++it) {
   std::cout << " " << *it;
}

 このサンプルコードには注目すべき点がいくつかあります。配列の全内容または一部の内容はイニシャライザで指定することができ、コンパイラは、イニシャライザの型と長さをチェックして、イニシャライザが配列の定義に従っていることを確認できます。==演算子もオーバーライドされており、配列内の各要素の値同士を比較できます。また、イテレータは他のSTLコレクションとまったく同じように機能します。さらに注目すべき点は、C++ 2008機能パックの一部としてリリースされるTR1拡張はすべてstd::tr1名前空間に含まれているということです。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • Nick Wienholt(Nick Wienholt)

    シドニーに拠点を置く独立系Windowsおよび.NETコンサルタント。著書に『Maximizing .NET Performance』、共著に『A Programmers Introduction to C# 2.0』(いずれもApress刊)。システムレベルソフトウェアアーキテクチャおよび開発を専...

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5