了解 cplusplus 上的 vector::assign 示例

Understanding vector::assign example on cplusplus

我对 following code 及其功能感到困惑:

first.assign (7,100);             // 7 ints with a value of 100

std::vector<int>::iterator it;
it=first.begin()+1;

second.assign (it,first.end()-1); // the 5 central values of first

我不明白 second.assign 的说法。我假设它在 second 中分配了 100 个元素,值为 100。为什么 second 的大小是 5?

在示例代码中

it = vec.begin()+1表示第二个元素

second.assign (it,first.end()-1);
                       ^^^^^^^^^^

最后一个元素后一个。 它跳过了第一个和最后一个元素,因此在最后一个赋值中有 7-2=5 个元素。

assign 有 2 个重载(C++11 中有 3 个)。

  • 第一次赋值使用the new contents are n elements, each initialized to a copy of val.
  • 第二次分配使用 the new contents are elements constructed from each of the elements in the range between first and last, in the same order.

因此,第二个赋值从第二个元素复制 first 到倒数第二个元素。