问题标签 [stdlist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
164 浏览

c++ - C++ 应用程序中的内存泄漏

我已经尝试了一千次来在这个片段中找到该死的内存泄漏,但我只是悲惨地失败了......我正在学习内存分配和这些东西,我永远无法制作一个完全免费的程序它的记忆还...

我正在调用一个 for 循环来分配 140 个 Contato_s 结构并将它们放入 Agenda std::list 中。然后我调用另一个 for 循环来使用 RemoverContato 和相应的代码删除所有 140 个联系人... Windows 不会报告单个 Kb 的空闲内存!

提前致谢 :)!

- 编辑

好的,这就是我试图破坏联系人的方式:

(Ofc 我总是得到“联系人 X 被删除”并且在那部分没有失败,所以理论上可以找到联系人)

0 投票
2 回答
8831 浏览

c++ - std::list 线程安全

  1. 我有一个列表,其中一个线程只是执行 push_back,而其他线程偶尔会遍历列表并打印所有元素。在这种情况下我需要锁吗?
  2. 我有指向其他对象中元素的指针。安全吗?我知道向量会在需要更多空间时移动所有对象,因此指针将失效。

    mylist.push_back(MyObj(1));
    if(someCond)
    {
    _myLastObj = &mylist.back();
    }

_myLastObj是类型MyObj*

如果我使用了向量,则对象将被移动到不同的位置,并且指针将指向垃圾。清单安全吗?

0 投票
2 回答
934 浏览

c++ - 加速 C++ 以找到最长的回文

我正在练习 Koeing 加速 C++,并想验证我的答案。由于网上没有可用的解决方案,我想在这里发布并请专家对我的解决方案的看法。我不确定人们是否会喜欢我把它贴在这里。如果没有,请告诉我,我以后不会这样做。还要提一下,这不是家庭作业,纯粹是我希望将我的 C++ 技能提升到一个新的水平。

问题:编写一个程序来查找字典中的所有回文。接下来,找到最长的回文。

到目前为止我所做的-> 我已经定义了测试回文的函数,还将所有单词存储在一个列表中。我在下面发布了我的代码。

我被困在哪里: 我需要建议,我选择使用列表数据结构而不是向量是否好?其次,我被困在如何显示最长的单词。我可以显示最长的长度但不能显示最长的单词。

我在下面的尝试

0 投票
4 回答
20979 浏览

c++ - 在 std::list 中查找

嗨,我从以下代码中收到编译错误。我无法弄清楚:

代码:

谢谢鲁奇

0 投票
3 回答
485 浏览

c++ - C++ 向量排序

这是关于使用 STL std::sort 函数进行排序背后的机制的一般问题。我读过一些关于排序的文章,一般来说,排序向量比排序链表更快。这对于结构/对象的向量和链表是否正确?对于结构的链表,我觉得只需修改索引即可轻松实现排序。另一方面,向量的排序似乎涉及物理地切换结构/对象数据的数据位置,因为它们是连续的(这是真的吗?)。在那种情况下,似乎对链表进行排序会更快。

编辑!!!:现在有图片:

在此处输入图像描述

所以我想这个问题更好用:对对象排​​序、对链表排序还是对向量排序更快(尽管这可能取决于对象的大小)?此外,链表的排序是否如 3) 所示完成,向量的排序是否如 2) 所示完成?

0 投票
1 回答
393 浏览

c++ - C++ 列表迭代器 reverse_iterator

可能重复:
为什么 std::list 上的 push_back 会更改用 rbegin 初始化的反向迭代器?

我得到一段代码如下:

输出:

看起来在我定义了前向迭代器之后it,如果我调用WILL NOTpush_front()的位置。it但是,在我定义 reverse_iterator 之后rit,如果我调用push_back()ritWILL 的位置会改变。

这应该被视为不一致吗?对我来说,其中一个移动而另一个保持不变对我来说真的没有任何意义。

提前致谢。:)

0 投票
2 回答
641 浏览

c++ - 容器超出范围和内存管理

可能重复:
std::list::remove 方法是否调用每个已删除元素的析构函数?

假设我有这个:

当 xList 超出范围时,我知道容器应该调用列表中包含的对象的析构函数吗?首先,这是真的吗?

如果是这样,那么由于列表包含指向类 X 的指针,当 xList 超出范围时,不应该调用 X 的析构函数吗?从而释放 X 持有的任何内存?

0 投票
1 回答
840 浏览

c++ - 使用指针从 std::list 中删除项目

是否可以使用 .remove 并将对象作为指针从 std::list 中删除对象?

我对指针感到很困惑。例如,我有以下课程:

那有一个指向我的小行星对象的指针列表。由于它是一个指针,我假设我可以使用指针遍历它并删除它。

在我的主类中,我创建了一个 AsteroidGen 实例并填充列表并绘制它。这一切都很好。然后我尝试从列表中删除与我的子弹相撞的项目之一:

我尝试逐行浏览我的代码以查看出了什么问题,但列表项实际上并未在下一帧中删除。我可能没有正确使用指针,我仍然觉得它们很困难。

有人可以给我建议吗!告诉我是否需要添加更多代码,我认为这就足够了谢谢。

0 投票
5 回答
282 浏览

c++ - 删除多个列表指向的数据?

我有一个可能会出现在多个列表中的对象。

例如

潜在地,有许多对象将以相同的方式出现在两个列表中。我意识到智能指针会很容易做到,但称我为受虐狂——我更愿意弄清楚如何在没有它的情况下做到这一点。

目前,我正在尝试这种技术:

但它delete lista;在运行时中断了我的等价物。希望那里的指针更聪明的人可以帮助我。提前致谢!

PS 我正在运行 Windows 7/MinGW。

0 投票
1 回答
951 浏览

c++ - 带有结构的列表映射(包含列表) - 无法通过映射访问结构内的列表

我启动了搜索引擎,但找不到我的问题的相应答案:

基本上我想要一个地图,每个条目都包含一个结构列表。一个结构本身包含 2 个std::string变量和一个std::list<string>.

尽管访问了结构中的列表,但一切都按预期工作。

一种方法(此处为:getRules)在必要时创建一个映射条目,并为其附加一个列表,并向其添加一个结构(此处为:Rule)元素。在此方法中,调用了另一个方法(此处为:getRuleParams),该方法应负责将元素添加到结构内的列表中。

在 getRuleParams 方法中,添加元素的列表可以通过 struct 元素正确访问。在“环绕”方法中,添加元素的列表也可以通过结构元素直接访问。

但是,如果我想访问结构的列表,或者更好的是列表元素,那么奇怪的事情就会发生。我发现地址发生了变化(结构,结构内的列表......)

您可以在我的代码产生的输出中看到(假设它编码正确)。

由于我是 C++ 新手,也许我错过了一些非常简单/必要的东西。它是否与一些被调用的复制构造函数有关,但为什么只使用指向所有“变量”的指针的行为相同?

我真的希望这里有人可以启发我。

我尽可能地简化/隔离了我的问题。(方法的签名必须是这样的,例如void*,因为我依赖于其他功能)

请参阅下面的代码并提前致谢: