擦除的元素,如果我有声明正确地从一个矢量
vector<int> table[9][9]
矢量表,我想比较和删除,如果它已经存在的元素,将删除是:
for(int row = 0; row < 9; row++)//erases the current choice from the whole row
{
for(int h = 0; h < (int)table[row][k].size();h++)
{
if(table[row][k][h] == table[i][k][0])
{
table[row][k].erase(table[row][k].begin() + h);
}
}
}
我认为这可行,但我不是100%,因为我试图删除使用这种技术的每个元素,它不起作用,对于那些想看到我用来删除所有元素的代码的人,然后它是:
for(int i = 0; i < 9; i++)
for(int k = 0; k < 9; k++)
for(int n = 0; n < table[i][k].size();n++)
table[i][k].erase(table[i][k].begin + n);
这种方法不起作用,所以我用清晰的代替。
如果擦除元素,下一个元素将具有相同的索引。 (因此,减少索引或使用一段时间,只有在没有元素被擦除的情况下增加索引) –
但是无论如何擦除一个元素一次是不必要的低效率。 –
我没有使用C++ 11,所以我不能做很多我想要的声明。我使用清晰的,它删除了所有元素,但我想知道为什么擦除没有,即使我通过表中的每个元素循环。 – user3251195