据我所知,我应该在析构函数中销毁我创建的所有内容new并关闭打开的文件流和其他流.但是,我对C++中的其他对象有些怀疑:
std::vector和std::strings:它们会自动销毁吗?
如果我有类似的东西
std::vector<myClass*>
Run Code Online (Sandbox Code Playgroud)
指向类的指针.调用向量析构函数时会发生什么?
它会自动调用析构函数myClass吗?或者只有矢量被破坏,但它包含的所有对象仍然存在于内存中?
如果我有一个指向类中另一个类的指针会发生什么,比如说:
class A {
ClassB* B;
}
Run Code Online (Sandbox Code Playgroud)
并且在代码中的某个点销毁A类.B类是否会被销毁,或者只是指针和B类仍将存在于内存的某个地方?
我是C++的新手.我正在阅读迈克尔道森的"通过游戏编程开始C++".但是,我对编程并不陌生.我刚刚完成了一个处理向量的章节,所以我对它们在现实世界中的使用有疑问(我是一名计算机科学专业的学生,所以我还没有太多真实的经验).
作者在每章末尾都有一个Q/A,其中一个是:
问:我应该何时使用向量而不是数组?
答:差不多总是如此.向量是高效和灵活的.它们确实比阵列需要更多的内存,但这种权衡几乎总是值得的.
你们有什么感想?我记得在Java书中学习过向量,但是在我的Comp totro中我们根本没有介绍它们.科学.上课,也不是我在大学的数据结构课.我也从未见过它们用于任何编程任务(Java和C).虽然我知道学校代码和现实世界的代码可能会有很大不同,但这让我觉得它们并没有被大量使用.
我不需要被告知两个数据结构之间的差异; 我非常了解他们.我想知道的是,如果作者在他的Q/A中给出了很好的建议,或者他只是想让初学者程序员免于破坏管理固定大小数据结构的复杂性.另外,不管你怎么想作者的意见,你怎么看在现实世界往往?
谢谢,
杰拉德
我的应用程序中有许多队列和优先级队列.我想轻松访问这些队列中的第n个项目,但是没有看到使用API执行此操作的简单方法.
我想我可以创建一个Iterator并迭代到第n个元素或使用toArray()[index],但似乎应该有一个更简单的方法.
我错过了什么吗?