Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.248.24] |
|
Сообщ.
#1
,
|
|
|
Есть два вектора:
std::vector<TreeListViewItem *> items; std::vector<TreeListViewItem *> displayedItems; пытаюсь их в цикле изменить: for (int i = iSelected + 1; items[i]->level > items[iSelected]->level; i++) { items[i]->isVisible = !items[i]->isVisible; displayedItems[i]->isVisible = !displayedItems[i]->isVisible; //displayedItems.erase(i); } но почему-то на время итерации значения items[i]->isVisible и displayedItems[i]->isVisible меняются на противоположные, а на следующей итерации приходят к исходному значение. Т.е. если в векторе было так: Цитата true true true то на время первой итерации становится так Цитата false true true на время второй так Цитата true true false а к последней итерации опять так: Цитата true true true В чем может быть проблема? |
Сообщ.
#2
,
|
|
|
к примеру, элементы items и displayedItems могут указывать на одни и те же объекты TreeListViewItem
|
Сообщ.
#3
,
|
|
|
Цитата Alek86 @ к примеру, элементы items и displayedItems могут указывать на одни и те же объекты TreeListViewItem точно! это у меня бывает извиняюсь за беспокойство по пустякам а как удалять элементы из вектора по индексу? erase просит итератор... |
Сообщ.
#4
,
|
|
|
Цитата miksayer @ а как удалять элементы из вектора по индексу? erase просит итератор... И в чём проблема? vec.erase(vec.begin() + index); |
Сообщ.
#5
,
|
|
|
можно с помощью std::vector::erase(), std::vector::begin() и std::advance()
|
Сообщ.
#6
,
|
|
|
всем спасибо, все понял
|