void pathfind(const int* tiles, int startTile, int endTile, int height) {//const int* tiles is my map
int currentTile = startTile; //The spawn tile
std::vector<int> points{ startTile };
int i;//for loops
bool possible = true;//to make sure they
if (tiles[currentTile + 1] <= 2 && floor(currentTile/height) == floor(currentTile - 1/height)) {//Less than 2 because 3 and up are non-traverseable tiles.
for (i = 1; i <= points.size(); i++) {
if (points[i] == currentTile + 1) {
possible = false;
}
}
if (possible == true) {
points.resize(points.size() + 1);
points.at(points.size()) = currentTile + 1;
currentTile++;
}
}
else if (tiles[currentTile - 1] <= 2 && floor(currentTile/height) == floor(currentTile - 1/height)) {
for (i = 1; i <= points.size(); i++) {
if (points[i] == currentTile - 1) {
possible = false;
}
if (possible == true) {
points.resize(points.size() + 1);
points.at(points.size()) = currentTile - 1;
currentTile--;
}
}
}
else if (tiles[currentTile - height] <= 2) {
for (i = 1; i <= points.size(); i++) {
if (points[i] == currentTile - height) {
possible = false;
}
if (possible == true) {
points.resize(points.size() + 1);
points.at(points.size()) = currentTile - height;
currentTile--;
}
}
}
else if (tiles[currentTile + height] <= 2) {
for (i = 1; i <= points.size(); i++) {
if (points[i] == currentTile + height) {
possible = false;
}
if (possible == true) {
points.resize(points.size() + 1);
points[points.size()] = currentTile + height;
currentTile--;
}
}
}
pointList = points;
}
Это дает мне во время выполнения вектора ошибки подстрочный из диапазона, а затем, если я его игнорировать, то это говорит о том, что библиотеки стенда находятся вне диапазона, и оба эти находятся в строках, которые не находятся в файле.Вектор индекс вне диапазона и стандартных C++ библиотек из из диапазона C++
И до этого он дал мне ошибки об использовании
points.at[];
поэтому, когда я удалить те, пришли эти ошибки.
Также у меня есть sfml Если это имеет значение.
Заранее спасибо.
Не уверен, если вы знаете, что индексы вектора/массива начинается с 0. Кажется, ваши индексы всегда начинаются с 1. – Shiping
Как сказал @Shiping индексы начинаются от 0 до длины - 1. 'points.at (points.size())' должно быть 'points.at (points.size() - 1)' и 'i <= points.size()' должно быть 'i
MRB