实战c++中的vector系列--构造、operator=和assign区别
2015-12-15 20:48
495 查看
vector也许是实际过程中使用最多的stl容器,看似简单,其实有很多技巧和陷阱。
着重看一看vector的构造,暂时按照C++11:
直接看看下面的代码,就知道如何构造一个vector了:
===========================================================
vector重载了=运算符,也有一个叫assign的方法,而且有什么区别吗?
std::vector::operator=
直接代码:
这里需要说明的是:
replacing its current contents
modifying its size accordingly
std::vector::assign
同样直接代码:
这里同样需要说明:
replacing its current contents
modifying its size accordingly
着重看一看vector的构造,暂时按照C++11:
default (1) explicit vector (const allocator_type& alloc = allocator_type()); fill (2) explicit vector (size_type n); vector (size_type n, const value_type& val, const allocator_type& alloc = allocator_type()); range (3) template <class InputIterator> vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); copy (4) vector (const vector& x); vector (const vector& x, const allocator_type& alloc); move (5) vector (vector&& x); vector (vector&& x, const allocator_type& alloc); initializer list (6) vector (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());
直接看看下面的代码,就知道如何构造一个vector了:
#include <iostream> #include <vector> int main () { std::vector<int> first; // default (1) std::vector<int> second (4,100); // fill (2) std::vector<int> third (second.begin(),second.end()); // range (3) std::vector<int> fourth (third); // a copy of third // the iterator constructor can also be used to construct from arrays: int myints[] = {16,2,77,29}; std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) ); std::cout << "The contents of fifth are:"; for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }
===========================================================
vector重载了=运算符,也有一个叫assign的方法,而且有什么区别吗?
std::vector::operator=
直接代码:
#include <iostream> #include <vector> int main () { std::vector<int> foo (3,0); std::vector<int> bar (5,0); bar = foo; foo = std::vector<int>(); std::cout << "Size of foo: " << int(foo.size()) << '\n'; std::cout << "Size of bar: " << int(bar.size()) << '\n'; return 0; } //结果: Size of foo: 0 Size of bar: 3
这里需要说明的是:
replacing its current contents
modifying its size accordingly
std::vector::assign
同样直接代码:
#include <iostream> #include <vector> int main () { std::vector<int> first; std::vector<int> second; std::vector<int> third; 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 int myints[] = {1776,7,4}; third.assign (myints,myints+3); // assigning from array. std::cout << "Size of first: " << int (first.size()) << '\n'; std::cout << "Size of second: " << int (second.size()) << '\n'; std::cout << "Size of third: " << int (third.size()) << '\n'; return 0; } //输出: Size of first: 7 Size of second: 5 Size of third: 3
这里同样需要说明:
replacing its current contents
modifying its size accordingly
相关文章推荐
- 实战c++中的vector系列--构造、operator=和assign区别
- VC++获取当前系统时间日期 GetSystemTime()函数的用法
- 【POJ 2104】K-th Number 题意&题解&代码(c++)
- C语言: 桶排序
- 在c++代码中执行bat文件
- C++中指针与引用的关系
- 【先进的算法】Lasvegas算法3SAT问题(C++实现代码)
- C语言for语句用法详解
- 数组引用:C++ 数组做参数 深入分析
- C语言运算符的优先级和结合性一览表
- 第六篇 Java编译器与C/C++编译器的比较
- C++ strcpy、strcat、strcmp和strlen的实现
- 联合与枚举 、 高级指针 、 C语言标准库(一)
- 魔王语言(C++
- 日常小记:C++中的log10函数
- COM组件简介
- 区间树上的重叠区间查找算法(C++)
- 1. C语言中的 sizeof 问题
- 联合与枚举 、 高级指针 、 C语言标准库(一)
- C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体