C言語・C++雑多なメモ

ひととおりC/C++言語を勉強した人向け,細かなTipsです.

C言語

入出力関係

  1. コンソール画面への出力方法 putc, puts, printf の研究
  2. キーボード入力の方法 getchar, gets, scanf の研究
  3. ファイル入出力 の研究

いろいろ

  1. エラーメッセージの読み方 (bcc32c.exe 編)
  2. main() 関数の引数・戻り値について
  3. 関数ポインタ
  4. 算術ライブラリ
  5. メモリの動的確保(配列)
    スタック,ヒープ,malloc, calloc など.C++を含む.

C++言語

入出力関係

  1. コンソール画面への出力方法
    cout, cerr の研究
  2. キーボード入力の方法
    cin の研究
  3. ファイル入出力 の研究
  4. メモリの動的確保(配列)
    C言語と, new,delete[],スマートポインタstd::unique_ptr,コンテナstd::vectorなど.

STL関係

普段の計算で使いそうなもの.
詳しくは専門書で.

複素数

std::complex<型名>,型名のところは通常,実数.

#include <iostream>
#include <complex>
using std::cout;
using std::endl;

int main(void)
{
    std::complex<double> z;
    z = std::complex<double>(2.0, 3.0);

    cout << z.real() << endl;
    cout << z.imag() << endl;
    cout << abs(z) << endl;   //  絶対値
    cout << norm(z) << endl;  //  ノルム
    cout << conj(z) << endl;  //  共役
    return 0;
}

配列にしたければ,std::vector<std::complex<型名>>
古いコンパイラだと,>>がエラーになるので,> > のように,スペースを一つ入れる.

平方根,三角関数,指数・対数も複素数に拡張されている. (もともとの math.h にあるCRT関数は実数向け.)

#include <iostream>
#include <complex>
using std::cout;
using std::endl;

int main(void)
{
    std::complex<double> z;
    z = std::complex<double>(2.0, 3.0);

    cout << sqrt(z) << endl;

    cout << sin(z) << endl;
    cout << cos(z) << endl;
    cout << tan(z) << endl;

    cout << exp(z) << endl;
    cout << log(z) << endl;
    return 0;
}

vector

accumulate

inner_product

auto

ラムダ

namespace

tuple

関数

VC

utf-8

utf-8 な .cpp を VS2015 でコンパイルするには,

> cl /source-charset:utf-8 *.cpp
または,単に
> cl /utf-8 *.cpp

VC 警告の抑制

#pragma warning(disable:4267) // size_t->int
#pragma warning(disable:4244) // double->float
#pragma warning(disable:4819) // mmreg

Windows

例外処理

構造化例外処理,C++の例外処理