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

时间:2015-01-08 14:04:58

标签: c++ class if-statement vector 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??){}

3 个答案:

答案 0 :(得分:1)

所有元素都不会像空指针一样空白,因为它们是按值而不是指针存储的。

该场景将对应于

之类的声明
std::vector<Vehicle*>

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

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

答案 1 :(得分:1)

vector<Vehicle> avai_space(50);不会创建存储容量为50的空向量;它创建一个包含50个有效条目的向量,其中每个条目都使用Vehicle类的默认构造函数进行初始化。

要创建最大存储空间为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";
}

答案 2 :(得分:1)

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

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