什么';这是C++;Java版本';s ArrayList 刚刚回到使用C++并尝试转换我最近编写的一个简单的java程序。
什么';这是C++;Java版本';s ArrayList 刚刚回到使用C++并尝试转换我最近编写的一个简单的java程序。,java,c++,arraylist,Java,C++,Arraylist,C++中java的首选项是什么? 使用标准库。 这里有两个附加点,使用向量 >这里。 >不同于 ARAYLIST/和数组< /Cord>爪哇,不需要做任何特殊的事情来处理向量作为数组——C++中的基础存储保证是连续的和有效的可索引的。 与ArrayList不同,vector可以有效地保存基元类型,而无需封装为完整的对象 从向量中删除项时,请注意必须向下移动删除项上方的项以保留连续存储。对于大型容器来说,这可能会很昂贵 如果将复杂对象存储在向量中,请确保其复制构造函数和赋值运算符是有效的。在封面
C++中java的首选项是什么?
使用标准库。 这里有两个附加点,使用<代码>向量> >这里。 <> >不同于<代码> ARAYLIST/<代码>和ArrayList
不同,vector
可以有效地保存基元类型,而无需封装为完整的对象
从向量
中删除项时,请注意必须向下移动删除项上方的项以保留连续存储。对于大型容器来说,这可能会很昂贵
如果将复杂对象存储在向量中,请确保其复制构造函数和赋值运算符是有效的。在封面中,C++ STL在容器内务处理中使用这些。
<>关于代码>预留()//>代码存储(上前),即在向量构造或初始化时间上,以尽量减少内存扩展在以后的扩展中从java到C++的传递。从另一个答案来看,vector似乎没有实现为链表?我说得对吗?我将此列表用作一个集合,其中添加和删除的对象的周转率相当高。这个数组实际上是最好的实现吗?还是有链表版本?@interstar-绝对正确。如果确实需要链表语义,则使用std::list
,尽管这样会失去可索引性(无运算符[]
),因此它不是真正的数组<代码>列表
具有自己的特性,因此向量
通常是更好的选择。在标准C++容器中,你将不得不妥协于一种或另一种方式。查看deque
,它可能为您提供更好的性能。测量vector
vsdeque
vslist
相对容易,因为它们在代码中基本上是可互换的-只需为容器使用typedef,例如typedef vector MyList
。好吧,我先试试向量。因为索引很有用。如果速度太慢,我可能会移动到链接列表。Thanks@interstar,ArrayList
,正如您可以从名称猜到的那样,也没有实现为链表。您可能正在考虑LinkedList
。此外,即使您在列表中添加和删除的对象的周转率相当高,vector
可能仍然比list
快,只要您最初为它分配了足够的空间,而它不需要重新分配(即,给它应有的最大空间)。@KyleStrand这很有趣。我一直认为ArrayList的意思是“一个实现为链表的类似ArrayList的东西”,而不是“一个实现为数组的类似链表的东西”。到目前为止,更好的答案应该是公认的。