如何检查带有自定义 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;
然后添加新的Vehicles
s 以 std::vector::push_back
结束。
我制作了这个自定义课程
#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;
然后添加新的Vehicles
s 以 std::vector::push_back
结束。