Как записать массив в вектор?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
setlocale(LC_ALL,"ru");
cout << "Введите имя животного" << endl;
cin >> name;
cout << "Введите пол животного: мужской | женский" << endl;
cin >> sex;
cout << "Введите цену зверя" << endl;
cin >> price;
string price_str = to_string(price);
cout << "Введите количество таких зверей" << endl;
cin >> quantity;
string quantity_str = to_string(quantity);
string arrAnimal[4] = { name,sex,price_str,quantity_str };
vector <string> VectorAnimal;
for (int i = 0; i < VectorAnimal.size(); i++) {
VectorAnimal[i] = arrAnimal[4];
cout << VectorAnimal[i];
}
}
И ничего не выводит
Ответы (2 шт):
А почему бы не так?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector <string> VectorAnimal(4);
cout << "Введите имя животного" << endl;
cin >> VectorAnimal[0];
cout << "Введите пол животного: мужской | женский" << endl;
cin >> VectorAnimal[1];
cout << "Введите цену зверя" << endl;
cin >> VectorAnimal[2];
cout << "Введите количество таких зверей" << endl;
cin >> VectorAnimal[3];
for (int i = 0; i < VectorAnimal.size(); i++)
{
cout << VectorAnimal[i];
}
}
Итак, более продвинутый вариант:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <Windows.h>
using namespace std;
void input_vector(vector<string>& VectorAnimal)
{
cout << "Введите имя животного" << endl;
cin >> VectorAnimal[0];
cout << "Введите пол животного: мужской | женский" << endl;
cin >> VectorAnimal[1];
cout << "Введите цену зверя" << endl;
cin >> VectorAnimal[2];
cout << "Введите количество таких зверей" << endl;
cin >> VectorAnimal[3];
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
vector <string> VectorAnimal(4);
input_vector(VectorAnimal);
for_each(VectorAnimal.begin(), VectorAnimal.end(), [](string animal) {cout << animal << endl; });
system("pause");
}
Здесь используется алгоритм STL который находится в <algorithm>- for_each(). Для красоты и понятности кода, я описал функцию, которая считывает данные о животном.
Здесь меняем кодировку на русскую:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Рассказываю про for_each(). Дословно, переводится как для каждого. А что для каждого? Наверное применить какое-то действие, которая будет в данном примере выводит элементы на экран.
Принимает три параметра - указатель на начало контейнера(массива), указатель на конец, указатель на функцию. Но мы не писали отдельную функцию, которую будем передавать в качестве параметра. Поступили проще, объявили анонимную функцию(лямбду) и вписали ее прямо в for_each()
Синтаксис:
[]() {}
Да, это самый странный синтаксис.
[]- дело в том, что лямбда это обычная функция, но без имени, и она не имеет доступ к переменным в main(), поэтому здесь мы указываем переменные которые будем захватывать и работать в теле лямбды(можно по значению и по ссылке).()- в этом примере сюда передается параметрstring- элемент вектора и выводится на экран.