gpt4 book ai didi

c++ - QList takeLast() 和 removeLast() 冲突

转载 作者:太空宇宙 更新时间:2023-11-04 15:40:12 25 4
gpt4 key购买 nike

当我尝试运行这段代码时:

QStringList foo;
foo << "bar";
QString last;
last = foo.takeLast();
qDebug() << last;
foo.removeLast();

IDE 引发此错误:

ASSERT: “!isEmpty()” in file ......\Qt\Qt5.3.0\5.3\mingw482_32\include/QtCore/qlist.h, line 299

如果我通过切换注释禁用带有 removeLast() 命令的行,则代码可以正常工作。我不理解这种行为,因为 takeLast()foo 还不是空列表时运行(removeLast() 被连续调用)。是错误吗?有没有办法在 QStringList 被清空之前保存最后一个?

最佳答案

在此类 API 中,“take”一词应按字面意思理解,这是一个非常普遍的约定 - 此函数确实带走最后一个元素,即删除它并返回它。您可以在 the documentation 中阅读相关信息:

Removes the last item in the list and returns it.

您可以使用 last()获取最后一个元素而不删除它。这也是 Qt 的通行惯例,getter 的命名没有“get”一词 - 只是它们“获取”的东西的名称。

关于c++ - QList takeLast() 和 removeLast() 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862514/

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