在犰狳的vec后面推元素

时间:2014-02-06 00:21:25

标签: vector stl rcpp armadillo

如何在犰狳的vec中向量的末尾推一个元素?我正在循环中执行添加和删除排序列表中的元素。这是非常昂贵的事情。在将vec x中的元素移除到vec x_curr时,我目前的做法是:

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

然而,如果在循环中添加元素,这并非易事。

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

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

2 个答案:

答案 0 :(得分:2)

我不明白你的问题。

Armadillo是一个数学库,因此它可以在向量上运行。如果您不知道自己的体型,可以根据需要分配一个猜测的N元素并按照常见的“时间二”成语调整大小,并在最后缩小。如果你知道尺寸,那么你没有问题。

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

答案 1 :(得分:0)

我不确定我明白你想做什么, 但是如果你想在你的矢量末尾添加一个元素, 你可以这样做:

    int sz = yourvector.size();
    yourvector.resize(sz+1);
    yourvector(sz) = element;