向量/数组中的点位置

Point position in a vector/array

本文关键字:位置 数组 向量      更新时间:2023-10-16

我正在写一个c++代码,使用向量/数组内的元素。我所做的就是在我的主代码之外创建一个vector:

     const int Lx = 4, Ly = 4;
     const int L = Lx*Ly;
     inline void vector_lattice(){
         for (int i = 0; i < L+1; i++){
             s[i]=0.0;
         }
         for (int i = 0; i < L; i++){
             s[i] =1;
         }
    }

Lx和Ly将给我维度,因为最终我将把它变成一个5x5的数组。

在我的问题中,这将给我一组"空间"中的位置,它应该有一个输出看起来像

     .   .   .   .   .
     .   .   .   .   .
     .   .   .   .   .
     .   .   .   .   .
     .   .   .   .   .

但是我现在需要像

这样的东西
     .   .   .   .   .
       .   .   .   .   .
     .   .   .   .   .
       .   .   .   .   .
     .   .   .   .   .

或者灵活地改变这些位置,但我真的不知道如何做到这一点,因为我只能是一个整数,因此我的位置和宇航员的位置总是相同的。有谁知道怎么做吗?

给它一些抽象。定义Specimen类并存储这些类的对象,而不是int类或其他您正在使用的对象:

class Specimen {
    // Your Specimen class definition here, all specimens should inherit from it.
}
class EmptySpecimen : public Specimen {
    // Nothing here other than overriden virtual methods.
}
class SomeSpecimen : public Specimen {
    // Actual specimen implementation.
}

然后在后面的代码中,你可以使用:

初始化vector
size_t width, height; // assign some values to these
vector< vector <Specimen*> > specimensMatrix;
specimensMatrix.resize(width);
for (size_t x = 0; x < width; ++x) {
    specimensMatrix.resize(height);
}

按你期望的方式填充它:

for (size_t x = 0; x < width; ++x) {
    for (size_t y = 0; y < height; ++y) {
        if (x % 2 == 0) {
            if (y % 2 == 0) {
                specimensMatrix[x][y] = new SomeSpecimen(/* ... */);
            else
                specimensMatrix[x][y] = new EmptySpecimen();
        }
        else {
            if (y % 2 == 0) {
                specimensMatrix[x][y] = new EmptySpecimen();
            else
                specimensMatrix[x][y] = new SomeSpecimen(/* ... */);
        }
    }
}

所以你的对象大小为8x6的矩阵看起来像这样(EEmptySpecimen, SSomeSpecimen):

SESESESE
ESESESES
SESESESE
ESESESES
SESESESE
ESESESES

或者,如果您将E替换为空格,S替换为点:

. . . . 
 . . . .
. . . . 
 . . . .
. . . . 
 . . . .