首页 > 解决方案 > 在向量问题的向量中擦除对象

问题描述

我正在尝试从本身包含在另一个向量中的向量中“擦除”一个元素。但是,要么我忘记了如何做到这一点,要么我错过了重点,或者有一个巨大的疏忽。无论我尝试什么,它总是会删除向量中的第一个元素。

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;
            }
        }
    }
}

标签: c++c++17stdvector

解决方案


这条线

if (parent_cell->cells[i][j] = this) {

将分配thisparent_cell->cells[i][j]评估为真。

之后它将被删除。

那应该==不是=

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


推荐阅读