擦除矢量问题矢量中的对象
Erasing an object in a vector of vector issue
我正在尝试 "erase" 一个向量中的一个元素,该元素本身包含在另一个向量中。但是,要么我忘记了如何执行此操作,要么我错过了要点,要么存在巨大的疏忽。无论我尝试什么,它总是会擦除向量中的第一个元素。
void release_docking() {
int loop_R = (int)parent_cell->cells.size();
for (int i = 0; i < loop_R; i++) {
int loop_C = (int)parent_cell->cells[i].size();
for (int j = 0; j < loop_C; j++) {
if (parent_cell->cells[i][j] = this) {
parent_cell->cells[i].erase(parent_cell->cells[i].begin() + j);
if (parent_cell->cells[i].empty()) {
parent_cell->cells.erase(parent_cell->cells.begin() + i);
}
parent_cell = nullptr;
is.docked = false;
resize_cells(root_cell);
break;
}
}
}
}
这一行
if (parent_cell->cells[i][j] = this) {
会将 this
赋值给 parent_cell->cells[i][j]
并评估为真。
之后它将被删除。
那应该是 ==
而不是 =
。
最近的编译器应该警告你这一点。确保警告已打开。
我正在尝试 "erase" 一个向量中的一个元素,该元素本身包含在另一个向量中。但是,要么我忘记了如何执行此操作,要么我错过了要点,要么存在巨大的疏忽。无论我尝试什么,它总是会擦除向量中的第一个元素。
void release_docking() {
int loop_R = (int)parent_cell->cells.size();
for (int i = 0; i < loop_R; i++) {
int loop_C = (int)parent_cell->cells[i].size();
for (int j = 0; j < loop_C; j++) {
if (parent_cell->cells[i][j] = this) {
parent_cell->cells[i].erase(parent_cell->cells[i].begin() + j);
if (parent_cell->cells[i].empty()) {
parent_cell->cells.erase(parent_cell->cells.begin() + i);
}
parent_cell = nullptr;
is.docked = false;
resize_cells(root_cell);
break;
}
}
}
}
这一行
if (parent_cell->cells[i][j] = this) {
会将 this
赋值给 parent_cell->cells[i][j]
并评估为真。
之后它将被删除。
那应该是 ==
而不是 =
。
最近的编译器应该警告你这一点。确保警告已打开。