【发布时间】:2016-01-04 10:38:44
【问题描述】:
我读取了一个文件,其中一个矩阵填充了 0、1 和 2。 当我找到 1 时,我创建一个 BlueCar,当我找到 2 时,我创建 RedCar:
class BlueCar : public Car
{
public:
BlueCar(){};
BlueCar(int x, int y);
void move();
virtual ~BlueCar();
};
class RedCar : public Car
{
public:
RedCar(){};
RedCar(int x, int y);
void move();
virtual ~RedCar();
};
class Car
{
public:
Car();
Car(int x, int y);
virtual ~Car();
virtual void move() = 0;
private:
int x,y;
};
我用这个对象填充两个向量:
std::vector<BluCar*> *sparseBlu;
std::vector<RedCar*> *sparseRed;
考虑到我需要移动矩阵的汽车,蓝色的汽车向下移动,红色的汽车向右移动,我认为最好的方法是对这些向量进行排序。这样我可以快速查看我正在考虑的汽车旁边的位置是否是空的。
由于蓝色汽车向下移动,我认为最好先按列再按行对“sparseBlu”进行排序,而不是先按行再按列对“sparseRed”进行排序。
我怎样才能达到这个结果? 最好是(就性能而言)当我一车一车地填充向量时立即对它进行排序,对吧?
【问题讨论】:
-
首先,为什么要在向量中存储指针?
std::vector<BluCar>,std::vector<RedCar>。为什么向量指针本身呢?std::vector<BluCar> sparsBlu,std::vector<RedCar> sparsRed. -
两辆车去同一个坐标会发生什么?
-
@PaulMcKenzie 因为我不知道矩阵的大小是否适用于 ex。 10x10 或 100000x100000,所以我不想填满所有堆栈。
-
@Jarod42 他们不能去同一个坐标,因为红车有转弯,蓝车有转弯
-
@rh0x A
std::vector使用堆而不是堆栈来分配数据。您从哪里得到 std::vector 使用堆栈的想法?std::array<T>使用基于堆栈的元素,而不是向量。