pythonistaがC++で配列を扱ってみる.
目次
はじめに
どうも,python使って2年のかわつあんです. 突然ですが,pythonista(パイソニスタ)とはpythonをよく使ってる人の俗称の1つなんだそうです. ちなみに,C++をよく使う人はC++er(シープラプラー?)らしい.(日本語に直すとめちゃくちゃダサい)
さて私事ですが最近,競技プログラミングに興味が湧いてきたのでc++をはじめました.また,ctypesを使ってpythonからC++の関数を呼びたいと思っているので,現在絶賛勉強中です.
ctypesについてはこちら kawats1.hatenablog.com
今回はpythonistaの私がC++で配列を使ってみて,いろいろ思ったことをまとめようと思います.
C++で1次元の配列を扱う
C++では例えば1次元だとint ary[5] = {1,2,3,4,5}
ように宣言するようです.
そこで,私はそれだけを知った状態で次のようなコードを書いてみました.
#include <iostream> using namespace ::std; int main(){ int ary[5] = {1,2,3,4,5}; cout << ary; }
実行結果
0x7ffee323e680
こんな感じのプログラムだとpythonならば配列の要素が出力されますがc++だと上手くいきません. これみたとき,なんだこれは...?って思ったものです.
実はこれは配列ary
のメモリ上のどこにいるかを表すもの(メモリ上の住所のようなもの)だそうです.CやC++などではメモリをちゃんと扱うのが大事らしいですね〜(詳しくは専門の方にまかせます).
もし配列の要素を出力したいなら,次のように書くといいです.
#include <iostream> using namespace ::std; int main(){ int ary[5] = {1,2,3,4,5}; for (int i=0;i<5;i++){ cout << ary[i] <<", "; } }
実行結果
1, 2, 3, 4, 5,
バッチリ出力できました.
ちなみにpythonのでは配列の要素でfor文を回せますが,以下の通りC++14以降では似たようなことができるようになったみたいです.
#include <iostream> using namespace ::std; int main(){ int ary[5] = {1,2,3,4,5}; for (auto& i : ary){ cout << i <<", "; } }
実行結果
1, 2, 3, 4, 5,
バッチリだ.意外にC++難しくないかも?
C++で2次元の配列を扱う
2次元だとint ary[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
ように宣言するようです.
#include <iostream> using namespace ::std; int main(){ int ary[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; for (int i=0; i<3; i++){ for (int j=0; j<3; j++){ cout << ary[i][j] << ", "; } cout << endl; } }
出力結果
1, 2, 3, 4, 5, 6, 7, 8, 9,
こんな感じで,問題なさそうです.
今回は1次元ないし2次元の配列を扱いましたが当然n次元配列扱えます(n>3).
もしfloat
型やdouble
,あるいはcomplex<float>
などを扱えば,それぞれの型を扱えます.
詳しくは,C++erのみなさんにお任せします.
さいごに
今回はここまでにしときます.
次はc++で使える別の配列の表現vector
, array
についてまとめようかなと思います.
ではまた(✿╹◡╹)