• ベストアンサー

C++ STL vectorの使い方

こんばんは。 C++のstd::vectorに関する質問です。 vectorをポインタ渡しにしたときに メンバにアクセスする方法を知りたいのですが・・・ 以下ソースの☆の部分をどう記述したらよいでしょう? #include <vector> typedef struct test {  char name[10];  char id[2]; } TEST; void funcVectorTest( std::vector<TEST> *a); int main(){  std::vector<TEST> a;  int i;  TEST foo= {"Taro","0"};  a.push_back(foo);  printf("%s",a[0].name);  a.push_back(foo);  printf("%s",a[1].name);  funcVectorTest(&a);//vectorのアドレス渡しテスト  printf("%s", a[2].name);//vectorのアドレス渡し確認  return 0; } void funcVectorTest( std::vector<TEST> *a) {  int i;  int cnt;  TEST *b;  b = new TEST[3];  TEST foo= {"Taro","0"};  a->push_back(foo);  cnt = a->size();  for( i = 0; i < cnt;i++){  //以下でa[i]のnameにアクセスしたいのですがうまくいっていません。  //☆strcpy( b[i].name, a[i]->name );  }  delete[] b; } お分かりになる方、お知恵をお貸し下さい(><) vectorについて最近知ったばかりでいまいち使い方が 分かっていない部分があるので このやり方がまずいということであれば教えていただけると 助かります。 よろしくお願いしますm( _ _ )m

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

(*a)[i].name または a->at(i).name

mugi-cha
質問者

お礼

即答、どうもありがとうございます(^^) うまくいきました。 本当に助かりました。 どうもありがとうございました(^^)

その他の回答 (1)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 んっと…ループの中で使いたい、って感じですよね? まず、STL系でループするときは、iteratorを使われると大変によろしいかと思います。 ソースで書きますと for( vector<string>::const_iterator i = v.begin(); i != v.end(); i++) { cout << (*i).name << endl; } みたいな感じでしょうか。 こちらのURLをご覧になるととてもためになるかと思います。 http://www.wakhok.ac.jp/~sumi/stl/

mugi-cha
質問者

お礼

早速の回答どうもありがとうございます。 まだわからないことも多いので URL、参考にさせてもらいます。 どうもありがとうございました(^^)