指向向量的指针

时间:2018-11-28 02:17:57

标签: c++ c++14

以下代码有什么问题

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 :(得分:1)

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;
}

答案 1 :(得分:1)

  

怎么了...?

您使用的指针的自动持续时间值更合适。

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;

答案 2 :(得分:-1)

您的指针未初始化。此外,根据ΦXocę웃Пepeúpaツ的回答,请确保何时使用指针正确使用new / delete。对于每个new关键字,应该有一个delete。通过将指针设置为NULL(从C ++ 11开始,建议使用nullptrNULL vs nullptr (Why was it replaced?)来避免悬空指针(不引用任何内容的指针)也是一种好习惯完成后,What exactly is nullptr?个问题提供了一些很好的解释。

但是,在这种情况下,我同意橡果。您不必指向vector对象,因为它是如何分配内存的。仅将vector用于您的解决方案就足够了。