如何在犰狳的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)。
答案 0 :(得分:2)
我不明白你的问题。
Armadillo是一个数学库,因此它可以在向量上运行。如果您不知道自己的体型,可以根据需要分配一个猜测的N
元素并按照常见的“时间二”成语调整大小,并在最后缩小。如果你知道尺寸,那么你没有问题。
STL具有所谓的通用容器和算法,但它不做线性代数。您需要弄清楚最需要的是什么,并相应地规划您的实施。
答案 1 :(得分:0)
我不确定我明白你想做什么, 但是如果你想在你的矢量末尾添加一个元素, 你可以这样做:
int sz = yourvector.size();
yourvector.resize(sz+1);
yourvector(sz) = element;