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 件のコメント:
コメントを投稿