2014-02-06 87 views
0

如何在犰狳vec中的矢量末尾推送元素?我正在循环中添加和删除排序列表中的元素。这是非常昂贵的事情。我目前在做从A VEC X移除元素的情况下的方式VEC x_curr为:在犰狳vec背后推动元素

x_curr = x(find(x != element)) 

但是它的不平凡,在循环添加元素的情况下。

x_curr = x; x_curr << element; x_curr = sort(x_curr); 

这不正确。另外效率不高。在犰狳中做什么是最有效的方法。任何其他STL库解决方案。我在Rcpp犰狳中使用它。我可以排序每个循环。 x_curr用于存储arma :: mat列的索引,即我将使用它作为mat.col(x_curr)。

+0

听起来像是你想要一个[multiset](http://www.cplusplus.com/reference/set/multiset/)。 –

+0

谢谢凯文。然而,Multiset不能用作arma:mat的指标向量。我将使用它们作为mat.col(x_curr)。 – vinash85

回答

2

我不明白你的问题。

犰狳是数学图书馆,所以它运作载体。如果你不知道自己的尺寸,你可以分配一个猜测的元素,并根据需要调整共同的'时代2'成语,最后缩小。如果你知道尺寸,那么你没有问题。

STL有所谓的通用容器和算法,但它不会做线性代数。你需要弄清楚你最需要什么,并相应地规划你的实施。

0

我不知道,我明白你想要做的, 什么,但如果你想要一个元素在你的载体, 的末尾添加你能做到这样的:

yourvector.resize(yourvector.size()+1); 
    yourvector(yourvector.size()-1) = element;