gpt4 book ai didi

c++ - 简化 Do While 循环检查空指针

转载 作者:行者123 更新时间:2023-11-30 03:25:56 26 4
gpt4 key购买 nike

我有一个我无法弄清楚的非常基本的问题。我正在使用哈希表链接来存储相互冲突的节点。我使用 do while 循环至少打印一次第一个节点,并继续打印链式节点(如果存在)。但是,为了遍历链表,我需要更改下一个循环的节点地址。无论我尝试以何种方式编写此代码,我都会发现自己在重复代码,而我试图通过使用此循环来避免这种情况。请帮忙

    do {
cout << "Bid id: " << table.at(i)->bidId << " title: " << table.at(i)->title <<
" fund: " << table.at(i)->fund << " amount: " << table.at(i)->amount << endl;
if (table.at(i)->next!=nullptr){//check if first node has next node
table.at(i) = table.at(i)->next; //change address to the next pointer
}// how do I avoid repeating my condition below?
}
while (table.at(i)->next!=nullptr);

最佳答案

此代码将在您的循环中复制功能,而不复制针对 NULL 的检查。

while(true)
{
cout << /* stuff */ endl;
auto next = table.at(i)->next;
if(next)
table.at(i) = next;
else
break;
}

但是根据描述,您确定要在遍历 HashMap 时重新分配值吗?我怀疑这段代码可能更适合您的意图/需求:

auto current = table.at(i);
while(current)
{
cout << /* stuff */ endl;
current = current->next;
}

关于c++ - 简化 Do While 循环检查空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48694714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com