2016年2月29日月曜日

c 構造体 コンストラクタ new vector

cの構造体に関して、コンストラクタ new vector  配列 などわからなかったので
サンプルプログラムを何個か作成してみる。

= c 構造体 コンストラクタ new vector
[2016-02-26 14:32]
上のことがごちゃ混ぜになり サンプルコードを作成してみる
以下のコードはすべて、私のかんきょうでは うまく実行できた。
以下でCarはだだのタグを思っていたのに、structをつけなくてもうまく実行できるの
はなぞだが....?
目次
    1. struct Car{}car;
    2. struct Car{};
    3. vectorを構造体で使ってみる
    4. 構造体でポインタとnewを使ってみる
    5. 構造体にコンストラクタを入れてみる
    6. 構造体にコンストラクタをいれて、newだけをしてみる
    7. 構造体のポインタの配列をつくる
    8. 構造体のポインタの動的配列をvectorでつくる


1. struct Car{}car;
    mainでcar.aで構造体にアクセスできる。
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
}car;

int main(){
    car.a = 12;
    car.b = 10;
    printf("%d, %d\n", car.a, car.b);
}


2. struct Car{};
    mainでcar.aで構造体にアクセスできる。
    本当は、structが絶対に必要だと思うが....
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
};

int main(){
    struct Car car;
    //何でかstructをつけなくてもコンパイル実行できる
    car.a = 12;
    car.b = 10;
    printf("%d, %d\n", car.a, car.b);
}


3. vectorを構造体で使ってみる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
};

int main(){
    std::vector<Car> v;
    Car car = {22, 20};
    v.push_back(car);
    vの末尾にcarのデータを追加
    printf("%d, %d\n", car.a, car.b);
    printf("%d, %d\n", v[0].a, v[0].b);
}

4. 構造体でポインタとnewを使ってみる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
    void set_car(int i, int j){
        a = i;
        b = j;
    }
};

int main(){
    Car* car;
    car = new Car;
    car -> set_car(123, 456);
    printf("%d, %d\n", car->a, car->b);
    delete car;
}


5. 構造体にコンストラクタを入れてみる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
    Car(){
        a = 123;
        b = 456;
    }
};

int main(){
    Car car;
     printf("%d, %d\n", car.a, car.b);
}


6. 構造体にコンストラクタをいれて、newだけをしてみる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
    Car(){
        a = 123;
        b = 456;
    }
};

int main(){
    Car* car;
    car = new Car;
    printf("%d, %d\n", car->a, car->b);


7. 構造体のポインタの配列をつくる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
    void set_car(int i, int j){
        a = i;
        b = j;
    }
};

int main(){
    Car* car[2];    //ポインタの配列
    car[0] = new Car;
    car[1] = new Car;
    car[0] -> set_car(000, 001 );
    car[1] -> set_car(222, 002);
    printf("car[0]  %d, %d\n", car[0]->a, car[0]->b);
    printf("car[1]  %d, %d\n", car[1]->a, car[1]->b);
    delete car[0];
    delete car[1];
}


8. 構造体のポインタの動的配列をvectorでつくる
#include <vector>
#include <stdio.h>
struct Car{
    int a;
    int b;
    void set_car(int i, int j){
        a = i;
        b = j;
    }
};

int main(){
    std::vector<Car*> car;
    car.resize(2);
    // 上をコメントアウトすると実行時えらーとなる
    car[0] = new Car;
    car[1] = new Car;
    car[0] -> set_car(000, 001 );
    car[1] -> set_car(222, 002);
    printf("car[0]  %d, %d\n", car[0]->a, car[0]->b);
    printf("car[1]  %d, %d\n", car[1]->a, car[1]->b);
    delete car[0];
    delete car[1];
}

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ページ

Featured Posts