Указатель на вектор - PullRequest
       7

Указатель на вектор

0 голосов
/ 28 ноября 2018

Что не так со следующим кодом

vector < double >* a;
a->push_back(25);
a->push_back(30);
a->push_back(15);
a->push_back(40);
cout << a->at(2) << endl;

Должно быть напечатано 15, но ничего не печатается

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Ваш указатель не был инициализирован.Кроме того, основываясь на ответе ΦXocę 웃 Пepeúpa ツ, убедитесь, что при работе с указателями правильно используете new / delete.Для каждого ключевого слова new должно быть delete.Также рекомендуется избегать висячих указателей (указателей, которые ничего не ссылаются), устанавливая для них значение NULL (по состоянию на C ++ 11 рекомендуется использовать nullptr: NULL против nullptr (почему это так)заменили?) и Что такое nullptr? вопросы дают некоторые хорошие объяснения), когда вы закончите.

Однако в этом случае я согласен с Acorn.Вам не нужно указывать на объект vector из-за того, как он выделяет память.Достаточно просто использовать vector для вашего решения.

0 голосов
/ 29 ноября 2018

Что не так ...?

Вы используете указатель, для которого более подходит автоматическое значение продолжительности.

std::vector < double > a;
a.push_back(25);
a.push_back(30);
a.push_back(15);
a.push_back(40);
std::cout << a.at(2) << std::endl;
0 голосов
/ 28 ноября 2018

a является указателем, но не инициализирован должным образом ... он должен выглядеть следующим образом:

int main()
{
    std::vector<double>* a = new std::vector<double>;
    a->push_back(25);
    a->push_back(30);
    a->push_back(15);
    a->push_back(40);
    std::cout << a->at(2) << std::endl;
    delete a;
    return 0;
}
...