2013-10-08 3 views
2

Я пытаюсь добавить несколько строк в вектор через цикл for, я могу сделать это легко с помощью массива, но у меня возникают проблемы с тем же действием на векторе. Ниже приведен пример массива, который я хотел бы попытаться преобразовать в вектор.C++ векторный ввод через цикл

Массив Стиль

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

Использование 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); 
} 

И тогда вы можете получить доступ к г-й имя, StudentNames[i]

3

Одним из способов является создание вектора с нужным размером для цикла:

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; 
} 
Смежные вопросы