- ベストアンサー
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(*a)[i].name または a->at(i).name
その他の回答 (1)
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 んっと…ループの中で使いたい、って感じですよね? まず、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/
お礼
早速の回答どうもありがとうございます。 まだわからないことも多いので URL、参考にさせてもらいます。 どうもありがとうございました(^^)
お礼
即答、どうもありがとうございます(^^) うまくいきました。 本当に助かりました。 どうもありがとうございました(^^)