第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話へ


a

eclipse c++ 入門講義第1部へ

魔方陣 数独で学ぶ V
BA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ