了解 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
到倒数第二个元素。
我对 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
到倒数第二个元素。