2

for ループを介して複数の文字列をベクターに追加しようとしています。これは配列で簡単に実行できますが、ベクターで同じことを行うのに問題があります。以下は、ベクトルに変換しようとする配列の例です。

配列スタイル

String StudentNames[];
int StudentNumbers;
for(int i = 0; StudentNumbers > i; i++){
cin >> StudentNames[i];
}

ベクター スタイル

vector<string> StudentNames;
int StudentNumbers;
//How do i add a for loop using vector and add strings to it similar to the array above?
4

2 に答える 2

4

std::vector::push_backとを使用std::getline:-

std::string sn; //temporary string

for(int i = 0; StudentNumbers > i; i++){
std::getline(std::cin, sn); 

StudentNames.push_back(sn); 
}

そして、i番目の名前に次のようにアクセスできますStudentNames[i]

于 2013-10-08T14:48:23.700 に答える
3

1 つの方法は、ループに適したサイズのベクトルを作成することです。

int StudentNumbers = ....;
std::vector<std::string> studentNames(StudentNumbers);
for(auto it = studentNames.begin(), end = studentNames.end(); it != end; ++it){
  std::cin >> *it;
}

また

int StudentNumbers = ....;
std::vector<std::string> studentNames(StudentNumbers);
for(auto& s = 0; studentNames){
  std::cin >> s;
}
于 2013-10-08T14:47:35.110 に答える