Как записать массив в вектор?

#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 шт):

Автор решения: Harry

А почему бы не так?

#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()

Синтаксис:

[]() {}

Да, это самый странный синтаксис.

  1. [] - дело в том, что лямбда это обычная функция, но без имени, и она не имеет доступ к переменным в main(), поэтому здесь мы указываем переменные которые будем захватывать и работать в теле лямбды(можно по значению и по ссылке).
  2. () - в этом примере сюда передается параметр string - элемент вектора и выводится на экран.
→ Ссылка