第12講 ベクタの学習
第4話 ベクタと配列・ポインタとの同一性
次のコードを組んでみて下さい。
#include<vector> //ベクタを使うのに必要なvectorをインクルード
#include <stdio.h> //printfを使うのに必要なstduio.hをインクルード
using namespace std;
int main(){
int a[3];
int* b=(int* )malloc(3*sizeof(int));
vector<int> c(3);
//配列の要素への添え字による代入
a[0]=1;
a[1]=2;
a[2]=3;
//配列各要素の値の表示
printf("配列各要素の値の表示\n");
printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
//ポインタを利用したアドレスによる配列各要素への代入
b=a;
*b=4;
*(b+1)=5;
*(b+2)=6;
//配列各要素の値の表示
printf("配列各要素の値の表示\n");
printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
//ポインタの場合の添え字による代入
b[0]=1;
b[1]=2;
b[2]=3;
//ポインタの場合の添え字による値の表示
printf("ポインタの場合の添え字による値の表示\n");
printf("b[0]=%d b[1]=%d b[2]=%d\n",b[0],b[1],b[2]);
//ポインタの場合のアドレスによる代入
*b=3;
*(b+1)=4;
*(b+2)=3;
//ポインタの場合のアドレスによる値の表示
printf("ポインタの場合のアドレスによる値の表示\n");
printf("*b=%d *(b+1)=%d *(b+2)=%d\n",*b,*(b+1),*(b+2));
//ベクタの添え字による値の代入
c[0]=1;
c[1]=2;
c[2]=3;
//ベクタの添え字による値の表示
printf("ベクタの添え字による値の表示\n");
printf("c[0]=%d c[1]=%d c[2]=%d\n",c[0],c[1],c[2]);
//ポインタを利用したアドレスによるベクタ各要素への代入
b=&c[0];
*b=4;
*(b+1)=5;
*(b+2)=6;
//ベクタ各要素の値の表示
printf("ベクタ各要素の値の表示\n");
printf("c[0]=%d c[1]=%d c[2]=%d\n",c[0],c[1],c[2]);
}
実行結果
配列各要素の値の表示
a[0]=1 a[1]=2 a[2]=3
配列各要素の値の表示
a[0]=4 a[1]=5 a[2]=6
ポインタの場合の添え字による値の表示
b[0]=1 b[1]=2 b[2]=3
ポインタの場合のアドレスによる値の表示
*b=3 *(b+1)=4 *(b+2)=3
ベクタの添え字による値の表示
c[0]=1 c[1]=2 c[2]=3
ベクタと配列・ポインタは使用方法が似ていることが分かります。
ただし、配列とポインタの場合は、
a[0], a[1],a[2]
を
*a,*(a+1),*(a+2)
とすることが出来ましたが、
ベクタではエラーします。
では、
アドレス操作によるベクタの制御は出来ないのでしょうか。
否です。
ベクタをアドレス操作するために、
ベクタには反復子というものが用意されています。
反復子が第5話のテーマです。
第3話へ 第5話へ
eclipse c++ 入門講義第1部へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ