如何检查带有自定义 class 的向量是否为 NULL?

How can I check if a vector with a custom class is NULL?

我制作了这个自定义课程

#ifndef VEHICLE_H_
#define VEHICLE_H_

Class Vehicle {
 public:
 Vehicle();
 Vehicle(char,char,int,int);
 virtual ~Vehicle();
 char getLicense_plate();
 void setLicense_plate(char);
 char getBrand();
 void setBrand(char);
 int getTime_in();
 void setTime_in(int);
 int getTime_out();
 void setTime_out(int);

 char license_plate;
 char brand;
 int timei;
 int timeo;
};

并且我在 main.cpp 中创建了一个大小为 50 的 Vehicle 向量,但我不知道如何检查每个值是否为空。

#inlcude<iostream>
#include<vector>
#include<algorithm>
#inlude "Vehicle.h"
using namespace std;

int main()
{
vector<Vehicle> avai_space(50);
for(int i=0;i<avai_space.size();i++)
 { 
  //if(avai_space(i) == NULL??){}

None 的元素将永远是 'empty',就像在空指针中一样,因为它们是按值存储的,而不是按指针存储的。

该场景对应于

这样的声明
std::vector<Vehicle*>

或者,如果指针需要拥有对象

std::vector<std::unique_ptr<Vehicle>>

vector<Vehicle> avai_space(50);不创建存储容量为50的空vector;它创建一个包含 50 个有效条目的向量,其中每个条目都使用 Vehicle class.

的默认构造函数进行初始化

要创建最大存储量为 50 的空向量,请使用:

vector<Vehicle> vehicle_vec;
vehicle_vec.reserve(50);

您可以使用 vehicle_vec.push_back() 将项目添加到向量中而不影响存储。

用条目填充向量后,您现在可以使用 vehicle_vec.size() 遍历此向量中的有效条目:

for (size_t i = 0 ; i < vehicle_vec.size() ; i++) {
    // Use vehicle_vec[i], for e.g.
    std::cout << vehicle_vec[i].brand << "\n";
}

vector<Vehicle> avai_space(50); 创建 50 Vehicles。它们存在于这一行之后并且不是空的,但是 Vehicle 的默认构造函数使它们成为什么。

如果你想在你的向量中存储 Vehicles,但还没有创建它们(我假设这就是你对 == NULL 的意思),只需写 vector<Vehicle> avai_space; 然后添加新的Vehicless 以 std::vector::push_back 结束。