테트리스 모양의 입력을 허용하는 프로그램을 작성하고 있습니다. 그때 그 2-D 벡터의 각을 가리다차원 벡터에 대한 포인터 벡터의 요소에 액세스
110 | 1 | 111
011 | 1 | 010
| 1 | 111
// Where a 0 denotes "empty space"
와 벡터라는 형태로 그 포인터를 저장 : 그들은 다음과 같이거야 그래서 나는 논리 값의 2-D 벡터에서 이러한 모양을 저장합니다. 내 문제는 개별 0과 1을 (다른 모양과 비교하기 위해) 액세스하는 데 달려 있습니다. 주어진 예
:
vector<vector<bool> > Shape;
vector<Shape *> shapes;
여기서 형상 I는 이전에 준 2-D 벡터 가리 세 요소를 가지고, I는 상기 (1)에 액세스 할 수있게하려면 (0, 1)의 총수 첫 번째 모양. 많은 다른 것들 사이
shapes[index]->at(0).at(1);
shapes[index]->at(0)[1];
shapes[index][0][1];
을이 중에 내가 원하는 걸주는 것으로 보이지 않는다 :
은 내가 시도했습니다. 나는 여전히 포인터에 대해 새롭기 때문에 나는 뻔뻔스럽게 명백한 것을 놓치지 않기를 바란다.
미리 감사드립니다.
요청에 따라 여기 내 코드가 더 큰 덩어리입니다. 이에
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef vector<vector<bool> > Shape;
class ShapeShifter {
public:
ShapeShifter(int argc, char **argv);
void Apply(int index, int row, int col);
bool FindSolution(int index);
void AddShape(Shape *newShape);
void AddMove(int index, int row, int col);
void PrintMoves();
void PrintGrid();
protected:
vector<vector<bool> > grid;
vector<Shape *> shapes;
vector<string> moves;
};
void ShapeShifter::Apply(int index, int row, int col) {
int i, j, k;
int y = 0, z = 0;
if((row + shapes[index]->size() > grid.size()) || (col + shapes[index]->at(0).size() > grid[0].size())) {
return; // shape won't fit
}
for(i = row; i < (row + shapes[index]->size()); i++) {
for(j = col; j < (col + shapes[index]->at(0).size()); j++) {
if(shapes[index]->at(y)[z] == 1) {
if(grid[i][j] == 0) {
grid[i][j] = 1;
}
else {
grid[i][j] = 0;
}
}
z++;
}
z = 0;
y++;
}
return;
}
나는 bools의 그리드를하고 난 모양이 그리드의 해당 요소에서 부울이 뒤집어 될 일이있는 경우 지정된 인덱스에 모양으로 마스크하기 위해 노력하고있어 .
형상 벡터는 그래서 같은 표준 입력 라인으로 채워집니다 : 당신은 왜 string
의 벡터를 사용하는
ShapeShifter sshift(argc, argv);
Shape *newShape;
vector<bool> shapeLine;
int i, j;
string line;
while(getline(cin, line)) {
j = 0;
newShape = new Shape;
for(i = 0; i < line.size(); i++) {
if(line[i] == ' ') {
j++;
}
else {
shapeLine.push_back(line[i] - '0');
}
}
newShape->push_back(shapeLine);
sshift.AddShape(newShape);
line.clear();
}
void ShapeShifter::AddShape(Shape *newShape) {
shapes.push_back(newShape);
}
내가 무엇을 의미 want'을? 너는 무엇을 기대하고 있니? 너는 무엇을 얻 느냐? –
게시 비트 및 코드 조각은 도움이되지 않습니다. [mcve]를 게시하십시오. –
마지막에 게시 한 세 가지 표현식을 평가할 때 어떤 값을 얻고 있습니까? –