第13講 ベクタの学習
第3話 ベクタを関数に渡す(その1)
さて、それではベクタを関数に渡す方法を考えましょう。
今までコンソールアプリケーションで、展開してきましたが久しぶりに、
CLRのWindowsフォームアプリケーションに戻りましょう。
実は、コンソールアプリケーションでもCLRのWindowsフォームアプリケーションでも、
ベクタや配列の渡しに関して大きな違いはありません。
CLRのWindowsフォームアプリケーションの作り方については、第1講第3話と第1講第4話を参考にしてして頂き、
次のようなフォームを作りましょう。
そして、実行をダブルクリックして次ぎのようにコーティングしましょう。
#pragma once
#include<vector>
namespace aa {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace std;
・
・
・
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
int a[3];
int* b=(int* )malloc(3*sizeof(int));
vector<int> c(3);
f1(a);
f2(b);
f3(&c[0]);
g1(a);
g2(b);
g3(&c[0]);
}
void f1(int* x){
int i;
for(i=0;i<3;i++){
x[i]=i+1;
}
}
void f2(int* y){
int i;
for(i=0;i<3;i++){
y[i]=i+4;
}
}
void f3(int* z){
int i;
for(i=0;i<3;i++){
z[i]=i+7;
}
}
void g1(int* x){
int i;
String^ w;
for(i=0;i<3;i++){
w+=x[i].ToString()+L" ";
}
label1->Text=w;
}
void g2(int* y){
int i;
String^ w;
for(i=0;i<3;i++){
w+=y[i].ToString()+L" ";
}
label2->Text=w;
}
void g3(int* z){
int i;
String^ w;
for(i=0;i<3;i++){
w+=z[i].ToString()+L" ";
}
label3->Text=w;
}
};
}
(コピーペースト用
#pragma once
#include<vector>
namespace aa {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace std;
・
・
・
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
int a[3];
int* b=(int* )malloc(3*sizeof(int));
vector<int> c(3);
f1(a);
f2(b);
f3(&c[0]);
g1(a);
g2(b);
g3(&c[0]);
}
void f1(int* x){
int i;
for(i=0;i<3;i++){
x[i]=i+1;
}
}
void f2(int* y){
int i;
for(i=0;i<3;i++){
y[i]=i+4;
}
}
void f3(int* z){
int i;
for(i=0;i<3;i++){
z[i]=i+7;
}
}
void g1(int* x){
int i;
String^ w;
for(i=0;i<3;i++){
w+=x[i].ToString()+L" ";
}
label1->Text=w;
}
void g2(int* y){
int i;
String^ w;
for(i=0;i<3;i++){
w+=y[i].ToString()+L" ";
}
label2->Text=w;
}
void g3(int* z){
int i;
String^ w;
for(i=0;i<3;i++){
w+=z[i].ToString()+L" ";
}
label3->Text=w;
}
};
}
)
このように入力してからビルドし実行ボタンを押すと、
となります。
配列、ポインタ、ベクタの渡しが成功していることが分かります。
第11講第6話へ 第12講第1話へ 第13講第2話へ 第13講第4話へ
vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ