【问题标题】:How to assign a value to the first n elements of a vector? c++如何为向量的前 n 个元素赋值? C++
【发布时间】:2013-08-01 03:08:54
【问题描述】:

如何为向量的前 n 个元素赋值? 比如说,我想将 1 分配给从索引 0 到索引 4 的向量。

我已经有一个大小为 11 的向量。现在我想将 1 放在前 5 个元素中。

【问题讨论】:

  • stf::fill(v.begin(), v.begin()+5, 1); 其中v 是您的向量。
  • 或:std::fill_n(v.begin(), 5, 1);
  • 你已经有向量了吗?能放 5 件东西吗?
  • 我已经有一个大小为 11 的向量。现在我想将 1 放在前 5 个元素中。
  • 为什么不使用简单的“for”循环?

标签: c++ vector assign


【解决方案1】:

您可以使用std::fill 或std::fill_n:

std::fill(v.begin(), std::next(v.begin(), 5), 1);
std::fill_n(v.begin(), 5, 1);

注意:std::next 是 C++11。在这种情况下,它可以替换为v.begin() + 5。

【讨论】:

    【解决方案2】:

    如果你想构造一个这样填充的向量,使用合适的构造函数:

    std::vector<int> v(5,1);
    

    这会创建 5 个值为 1 的整数。

    【讨论】:

    • 我已经有一个大小为 11 的向量。现在我想将 1 放在前 5 个元素中。
    • 最初的问题并不清楚。其他人使用填充工作的答案
    【解决方案3】:

    您可以使用std::fill

    根据文档:

    template< class ForwardIt, class T >
    void fill(ForwardIt first, ForwardIt last, const T& value)
    {
        for (; first != last; ++first) {
            *first = value;
        }
     }
    

    你可以这样做:

     std::fill(v.begin(), v.begin() +5, 1) ;//assume you fill 1 from index 0 to 4(included)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      相关资源
      最近更新 更多