У меня есть вопрос об изменении или замене элементов в списке. У меня есть класс:Как изменить значение элемента в списке stl?
class Node{
public:
elType type; // enum
string name;
Node(elType type, string name);
~Node();
void printNodeInfo();
}
и список:
std::list <Node * > someList;
Теперь, как я могу заменить значение (для eaxmple типа изменения) в таком элементе. Я попытался это:
std::list<Node * >::iterator it = someList.end();
it--;
while(openName.compare((*it)->name) != 0)
it--;
(*it)->type = otherType;
Но это не похоже на работу, вид остается неизменным. Я был бы благодарен за любую помощь.
EDIT: Я обновил список, так что теперь у меня есть:
std::list <Node> someList;
и изменил замена на:
it->type = otherType;
Я также попытался:
std::list<Node >::iterator it2 = someList.erase(it);
Node temp(otherType, openName);
someList.insert(it2, temp);
после этого для бота h - простой способ печати:
it2->printNodeInfo();
ничего не выводит.
Ваш поиск воссоздавая 'std :: find_if', и вы также можете использовать равное равенство:' str == otherStr' – chris
ваш цикл while должен проверяться с помощью begin(), чтобы он не продолжался за пределами, если он не нашел 'name' –
Убедитесь, что * это не nullptr. Тип печати после настройки. Используйте отладчик. –