如何将值添加到*向量

How to add a value to a *vector?

本文关键字:向量 添加      更新时间:2023-10-16

在我的头文件中,我将这个向量定义为指针。

private:
    vector<filteredPoint_t> *filteredValues;

在我的cpp文件中,我想向这个向量添加一个(结构)filterPoint_t的实例。它编译。

filteredPoint_t fp;
fp.filteredValue = 3.4;
fp.globalIndex = 3;
filteredValues->push_back(fp);

但是,当我运行它时,它会在调用filteredValues->push_back(fp)之后立即停止。甚至没有显示prinf控制台输出。控制台上没有错误消息。

我在这里错过了什么?

一些背景信息:我需要将filteredValues传递给多个线程。这样每个线程都可以写回这个变量。因此,我想我应该使用一个指针变量来做到这一点。

您需要首先分配内存(可能是构造函数)或将其指向有效的vector<filteredPoint_t>地址:

 filteredValues = new vector<filteredPoint_t>() ;

然后你可以在上面使用push_back

此外,请确保在析构函数中取消分配使用new分配的内存

delete [] filteredValues ;

这是一个指针,意味着它必须指向有效的东西才能使用:

vector<filteredPoint_t> *filteredValues;

如果不这样做,您将取消引用未初始化的指针并调用未定义的行为。

初始化意味着:

  • 使其指向有效的东西(即已经存在的矢量)

    filteredValues = &existingVectorOfTheSameType;
    
  • 自己创建一个新的堆向量,例如

    filteredValues = new vector<filteredPoint_t>();