Не понимаю, почему не работает vector?

159
30 января 2020, 00:10

Одно из действий в задаче, заполнить массив.

#include <iostream>
#include <vector>
int main() {
    std::vector<float>v;
    std::vector<float>::iterator it;    
    float m, n;
    std::cin >> m;
    for(float i = 0; i < m; ++i){
        std::cin >> n;
        v.at(i) = n;
    }
    for(it = v.begin(); it < v.end(); ++it)
        std::cout << *it;
    return 0;
}
Answer 1

Потому что по умолчанию вектор у вас пустой. И вам надо не присваивать значения [несуществующим] элементам, а добавлять их в вектор:

for(float i = 0; i < m; ++i){
    std::cin >> n;
    v.push_back(n);
}

Конечно, можно объявить вектор так:

float m, n;
std::cin >> m;
std::vector<float> v(m);

и тогда использовать присваивание.

И еще.Количество элементов массива у вас целое - а вы используете float.

Итератор не стоит объявлять в стиле C, вначале функции - ограничивайте область видимости переменных, т.е. пишите

for(std::vector<float>::iterator it = v.begin(); it < v.end(); ++it)
    std::cout << *it << "  ";

но еще лучше - чай, в 2019 году живем :) -

for(auto it = v.begin(); it < v.end(); ++it)
    std::cout << *it << "  ";

или даже

for(auto x: v)
    std::cout << x << "  ";

В общем, что-то вроде

using std::cin;
using std::cout;
using std::vector;
int main()
{
    vector<float>v;
    size_t m;
    cin >> m;
    for(size_t i = 0; i < m; ++i)
    {
        float x;
        cin >> x;
        v.push_back(x);
    }
    for(auto x : v)
        cout << x << "  ";
    return 0;
}
Answer 2

std::vector<float>::iterator it; а у вас iteratore

Answer 3

Чтобы обращаться к элементам вектора, надо сразу создавать вектор желаемого размера.

https://ideone.com/FFUfU6

#include <iostream>
#include <vector>
int main()
{
  size_t n;
  std::cin >> n;
  std::vector <float> v(n);
  for (auto &x : v)
    std::cin >> x;
  for(auto x : v)
    std::cout << x << ' ';
  return 0;
}

PS: А ещё советую использовать double, а не float.

READ ALSO
Как отключить предупреждения #define _CRT_SECURE_NO_WARNINGS в VS 2017

Как отключить предупреждения #define _CRT_SECURE_NO_WARNINGS в VS 2017

Как отключить предупреждения в VS 2017? Использование #define _CRT_SECURE_NO_WARNINGS в самом начале кода не помогаетЕсли поставить в свойствах препроцессора...

135
Сравнение BigDecimal &ldquo;&gt;=&rdquo;

Сравнение BigDecimal “>=”

Есть ли более короткая запись сравнения BigDecimal chisl1 >= chisl2, чтобы не писать два условия в if?

201
Как игнорировать null значения в SQL запросе

Как игнорировать null значения в SQL запросе

Написал вот такой запрос

141
Получить результат из потока

Получить результат из потока

Подскажите, пожалуйста как лучше делать в таких ситуациях

165