擦除矢量问题矢量中的对象

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] 并评估为真。

之后它将被删除。

那应该是 == 而不是 =

最近的编译器应该警告你这一点。确保警告已打开。