#4
by asd » 8年前
SBB さんが書きました:
「<<」 は シフトでなければ、 ( V<<j, j )のような形で V に (j,i) を設定できるのでしょうか。
C言語にはこんな機能はないではと思いますが。
C++ではストリームを介して文字出力する際にも<<演算子を使いますね。
とはいえ、coutをシフト演算しているわけではないです。
挿入(流し込む)イメージでとらえてもらえると。
コード:
cout << "Hello,World!" << endl;
ちなみにOpenCVのMatクラスにも<<演算子とカンマ区切りの式にて行列の初期値設定ができると明記されています。
私もすぐに試せる環境がないのですが、usaoさんのおっしゃっているように先頭要素がj,iの順に設定された行列が
定義されるのではないかと思います。
(参考)
http://opencv.jp/opencv-2svn/cpp/basic_ ... s.html#mat
カンマ区切りの初期化子:
// 3x3 の倍精度単位行列を作成します.
Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
ここでは,まず(後で述べる) Mat_ クラスのコンストラクタに適切なパラメータを与えて呼び出し,さらに << 演算子に続いて,定数,変数,式などから成るカンマ区切りの値を与えています.また,コンパイルエラーを避けるために,カッコが必要なことにも注意してください.
[quote="SBB" id=3,19424,146807]
「<<」 は シフトでなければ、 ( V<<j, j )のような形で V に (j,i) を設定できるのでしょうか。
C言語にはこんな機能はないではと思いますが。
[/quote]
C++ではストリームを介して文字出力する際にも<<演算子を使いますね。
とはいえ、coutをシフト演算しているわけではないです。
挿入(流し込む)イメージでとらえてもらえると。
[code]
cout << "Hello,World!" << endl;
[/code]
ちなみにOpenCVのMatクラスにも<<演算子とカンマ区切りの式にて行列の初期値設定ができると明記されています。
私もすぐに試せる環境がないのですが、usaoさんのおっしゃっているように先頭要素がj,iの順に設定された行列が
定義されるのではないかと思います。
(参考)
http://opencv.jp/opencv-2svn/cpp/basic_structures.html#mat
[quote]
カンマ区切りの初期化子:
// 3x3 の倍精度単位行列を作成します.
Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
ここでは,まず(後で述べる) Mat_ クラスのコンストラクタに適切なパラメータを与えて呼び出し,さらに << 演算子に続いて,定数,変数,式などから成るカンマ区切りの値を与えています.また,コンパイルエラーを避けるために,カッコが必要なことにも注意してください.
[/quote]