【问题标题】:How to use a for loop to add elements to a vec or a rowvec?如何使用 for 循环将元素添加到 vec 或 rowvec?
【发布时间】:2019-01-04 21:47:14
【问题描述】:

尝试使用for循环在vec或rowvec中添加元素,但是每次循环添加元素时,矩阵每次都会重置?

犰狳中的新手,我查看了文档,但我什至找不到他们使用 for 循环的单个示例示例。感谢您的帮助。

arma::vec A;
for (int i = 0; i < 10; i++) {
    A << i;
}
cout << A;

预期输出:0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

实际输出:9.0

【问题讨论】:

  • @scohe001 该副本并不完全适用,因为 OP 使用的是 arma::vecs 而不是 std::vectors。
  • 您应该能够使用常规的element access 来初始化您的值,尽管它在性能方面可能不是最佳的。
  • @0x5453 啊,我什至没有意识到这个标签,我以为它只是写得很糟糕的 C++。在这种情况下,这可能是一个更好的欺骗:push_back/append or appending a vector with a loop in C++ Armadillo
  • 为什么要投反对票,这是一个很好的问题。答案并不明显。文档没有说明如何将新元素推入 vec

标签: c++ armadillo


【解决方案1】:

有几种方法可以做到这一点。第一种方法是简单地事先声明向量的大小和set 各个元素:

arma::vec A(10);
for (arma::uword i = 0; i < 10; ++i) {
    A(i) = i;
}

如果您事先不知道需要多少元素,请遵循以下答案中详述的其他方法:push_back/append or appending a vector with a loop in C++ Armadillo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 2020-08-12
    • 1970-01-01
    • 2021-12-03
    • 2018-01-27
    • 1970-01-01
    • 2022-08-09
    • 2019-04-02
    相关资源
    最近更新 更多