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についてまとめようかなと思います.

ではまた(✿╹◡╹)