C++

OpnCV _ C++ _引数の & と const のありなし

型の前の & は参照を示す宣言子。 参照したサイトでは cv::Mat 型だが、他の型も挙動は同じ ? かと。 以下の違い。 cv::Matconst cv::Matcv::Mat&const cv::Mat& 前知識 Memo -- cv::Mat のコピー -- cv::Mat は代入演算子を使うと、浅いコピーが行われコピ…

C++_コンストラクタに引数を渡して初期化

分からずに書いてるので調べた。 Hoge クラスのメンバ変数( 定数 ) _id を 引数 i で初期化。 Hoge::HOge( int i ) : _id ( i ) { メンバが複数ある場合はコンマ , で区切る。 ex ) //Hoge.h const int fuga; //001 //Hoge.cpp Hoge::Hoge( int getId ) { fu…

C++_ファイル出力のメモ

書き込み std::ofstream ofs("./ファイル名"); ファイルがなければ作成。既存のファイル内容は開いた時点で破棄され、上書きになる。※ifstream は指定したファイルが無ければエラーとなる。 --Memo-- 適当に拡張子を付けて ( .hoge ) 上書きテストしたら、「…

C++/CLI_宣言のアスタリスク * と ハット ^

分からなくなった。 * ポインタ型 C++ では、new でインスタンスを作成し、アスタリスク * がついたポインタ変数に格納。ポインタが格納。 ^ ハンドル型 C++/CLI ではインスタンスを「gcnew」で作成し、ハット ^ がついたハンドル変数に格納。 これによりガ…

C++_assert とは

C++/CLI でも C#++ でも使えるもよう。assert:主張する。 assert は、その関数を呼び出すユーザに対して要件を表明できる。 ex )「関数の引数がある範囲内の値でなければならない」→ assert ( 10 < a < 100 ) 「ある状態でこの関数を呼び出してはならない」…

C++_参照型とポインタ

ごちゃになってきたので再度調べ。 ポインタ アドレスを記憶する変数。アドレスを直接扱う。 参照型 C++ で使われる。ポインタ型よりも制約が強く安全に使える。裏ではポインタの受け渡し。 ・参照型の使い方 // 普通のdouble 型 double a; // x は a を参照…

C++_アンパサンドの意味

& ( アンパサンド ) には 2 つの意味がある! &変数 → アドレス演算子型名& → 参照型を示す宣言子 ポインタでの & ( アドレス演算子 ) メモリアドレスを得る演算子。ポインタとセット。参照型で利用するものとは全く別。 int hoge = 10; int* fuga = &hoge …

C++_ std::setprecision と std::fixed ( 桁数指定 )

桁数指定の時に使用するが、分からないまま使用しているので調べた。ほぼコペ。 ※ #include <iomanip> が必要。 std::setprecision 浮動小数点数を出力する精度を設定するマニピュレータ。 マニピュレータ:ストリームに対して、何らかの操作を行うオブジェクト。スト</iomanip>…

C++_Enter キーを押下したら処理が続行

Enter キー を押すまでは待機状態にしたい。 getchar ( ) を書くだけ。 // 処理 1 getchar(); // ここで入力待ち // 処理 2 Enter キーが押下されたら処理 2 が走る getchar() はその名通り文字を受け取る関数。Enter ( 改行 ) が押されて初めて入力した文字…

C++_ファイル入出力の基本 ( 出力 )

出力ファイルストリーム ( 書き込み ) について。 std::ofstream でファイルへ出力。 #include <fstream> が必要。 std::ofstream ofs( "./ファイル名" ); if ( ! ofs ) { // ファイルオープン失敗時の処理 } ofs << "Hey" << std::endl; 指定したファイルに Hey が書</fstream>…

C++_ファイル入出力 ( 入力 ) >> 演算子使用

ファイル読込み。getline( ) を使わないコード。 #include <fstream> 必要。 ex ) 読みやすいように半角スペース入れて箇所あり。 std::ifstream fS( "./hoge/text.txt"); if( ! fS ) { return; } int a, b; while ( ! ifsT.eof() ) { fs >> a >> b; } デリミタがスペ</fstream>…

C++_小数点桁数を指定して、stringに変換

sprintf を使う。 ex ) double num = 112.14328; char str[20]; std::sprintf(str, "%.2f", num); コンソールに出力する場合は、 printf("%.2f", num); str は、112.14 となる。num が11.14328 の場合は 11.14 となる。 sprintf の引数 int sprintf( char *s…

C++_size_t から int への変換

未解決 size_t で取得した値を、配列のインデックスとして使ったら以下のエラー。 warning C4267:'引数': 'size_t' から 'int' に変換しました。データが失われているかもしれません。 これは、size_t から サイズの小さな型への変換を検出した時に出るエラ…

C++_cout の << について

cout の << は何なのか。シフト演算子ではないのかと疑問だった。 出力演算子 という。 std::cout << "Hey" << std::endl; std::coutconsole out :標準出力 ( = コンソール出力) std::endlend of line :改行 C では << は 左シフト、 >> は 右シフト。C++…

C++_ #include 時の < > と " "

参照サイト ( もとい引用 ) は C だが、同じだろと思い C++ カテゴリにした。 ヘッダファイルを探すときの優先順位に関係している。 < > : Windows 標準のヘッダファイルをインクルードする時。 " " : 自分たちで作ったユーザヘッダファイルをインクルード…

C++_コンテナとイテレータ

メモ程度。 コンテナクラスとは 入れ物のこと。一つのコンテナに入る要素の型は全て同一。 コンテナクラスはたいてい begin(), end() メンバ関数を持ち、コンテナクラスが保持している要素へのイテレータを返す。 イテレータを介して、コンテナが保持してい…

C++_ iterator および distance のメモ

イテレータがよく分からなかったので Debug で中身を見ただけ。 ※ #include <vector> 必要。 std::vector<int> x;x.push_back(7);x.push_back(8);x.push_back(1);x.push_back(2); std::vector<int>::iterator iter = std::max_element(x.begin(), x.end()); //中身は { 8 } int</int></int></vector>…

C++_ファイルへの書き込み

std::ofstream を使う。 std::ofstream の定義に飛ぶと basic_ofstream と書いてあったので調べると、メンバ関数には is_opne などがある。が、よく分からないので後回し。 ex ) 0 ~ 9 の数値を書き出す。 std::ofstream outputfile("./test.txt"); for (in…

C++_デバッグでのみ発生するエラー

0xC0000005: 場所 hogahoga の読み取り中にアクセス違反が発生しました 上 記のエラーがDebug では発生して処理が止まるが、Release では何事もなく処理が進む。無視していいのかなと期待を抱いて調べたが無視していけないヤツだった。 これは、 即座に対処…

C++_ 変数の中身を確認 ( コンソール出力 )

C++

※ 環境は Visual Studio 。出力ウィンドウに表示する。 std::cout << str << std::endl; str は変数。ちなみに " Hey!!! " と書くと " " の内容が出力。console out の略らしい。 [ ネイティブコードのデバッグを有効にする ] のチェックが外れている必要が…

C++_ 文字置換 ( ソース解読 )

前書いたまとめ。 hoga を fuga に変更。 std::string str = "今日は hoga だった。明日も hoga だ。"; std::string from = "hoga"; std::string to = "fuga"; std::string::size_type pos(str.find(from)); while (pos != std::string::npos) { str.replace…

C++_ std::string::replace

文字、文字列を置換する。 どこを置換するのかは位置を指定する必要があるので、find 関数 を用いる。 戻り値 置換が適用された文字列オペランド。自身のオブジェクトの参照。置換した文字列が自身の変数に返ってくる? オペランド:式に登場する数値や変数…

std::string::npos

std::string::npos std::string::find など検索関数で文字列が発見できなかった時に返ってくる値。 std::string::size_type 型 の -1 で定義されている。 std::string::find など戻り値をいったん変数に受け取る場合は、必ず std::string::size_type 型で受…

C++_ std::string::find

string::find 指定した文字 ( や文字列 ) が最初に出現する位置を返す関数。 戻り値 見つけた場合は検索文字の最初の文字インデックス。それ以外は string::npos 。 引数 第一引数 T 検索したい文字列第二引数 size_type 検索開始位置検索したい文字列 の型…

C++_ std::string::size_type

std::string::size_type は 符号なし整数型。int となにが違うのかというと、string の要素数とインデックスを表す専用。 vecto r::size_type は「要素 数をカウントする型」とある。確か string は char 型の配列なので、std::string::size_type も同様にch…

C++_文字置換

ソースの意味は分かってない。環境は Visual Studi o。C # から C ++ のライブラリを読み込んでる。 ex )hoga を fuga に置換。 std::string str = "今日は hoga だった。明日も hoga だ。"; std::string from = "hoga"; std::string to = "fuga"; std::stri…

C++_ vector にて、最大値のイテレータを取得

イテレータ ≠ インデックス らしい。よく分からない。 std::vector<float>::iterator max = std::max_element(hoga.begin(), hoga.end()); size_t maxIndex = std::distance(hoga.begin(), max); maxIndex が 最大値のイテレータ。 hoga は vector<float> 。 distance で先</float></float>…

C++_生配列 ・ std::vector より std::array を使う

std::array 使った方がデータを扱うのが楽・安全、ということだと思う。 std::array の利点 at を使用すると境界チェックが行われるので安全にデータアクセスできる。 従来の C スタイルの配列とパフォーマンスが変わらない ( 速度同じ )。 std::vector と比…

C++_宣言した添え字の範囲外に代入した時

※生配列。std::array の場合は不明。※C 言語サイトを参照してるので、違うところあるかも。 結論から エラーが出なくとも、他の変数に ( 値が変わったりなど ) 影響する可能性がある。故に、宣言された範囲外のインデックスを持つ配列要素への代入は NG。 回…

C++_ std::array が使えない

「不完全な型は使用できません」 とコンパイルエラー。 ファイル冒頭に以下を追加する。 # include <array> これでstd::array<int, 5> hoga = { 0,1,2,3,4 }; のコンパイルエラー解消。 コンパイルエラー:構文が間違っている。文法レベルのエラー。 実行エラー:構文は問題</int,></array>…