向量(动态数组)
头文件 #include<vector>
定义
vector<int> vec <>中放数据类型,vec是变量名vector <int> vec1(5); 一个大小为5的数组
vector <int> vec2(5,12); 一个大小为5的数组,以12填充
迭代器
定义示例:vector<int>::iterator ite;
在codeblocks中定义对象时初始化了几个,那么容量就是几
添加元素
push_back()函数添加一个元素,参数即为元素值
属性
容器大小
无参数就是0
vc 6.0 和codeblocks中容器大小不够时增加,现有容量一倍,现有20个,新的40个,现有40个,新的80个
vs2005中容量不够时增加,为现有容量一半,现有10个,新的就是15个,现有13个,新的就是19个。
reserve()修改容量(只能变大,不能变小)
size()函数,取元素个数
resize()函数,设置vector大小
empty()函数,判断是否有元素,有返回0,无返回1.
输出
下标运算或at()函数
back()函数 输出尾巴元素
操作
遍历
for(ite;ite!=vec.end();ite++)
{
cout<<*ite<<endl;
cout<<*ite<<endl;
}
void fun(int i)
{
cout<<i;
}
{
cout<<i;
}
for_each(vec.begin(),vec.end(),fun);
添加
ivec.insert(vec.begin()+2,12); 在下标为2的地方插入12.
ivec.insert(vec.begin()+2,5,12); 在下标为2的地方插入5个12.
vec.insert(vec.begin()+3,vec1.begin(),vec1.begin()+3);在vec下标为3的地方插入vec1前三个元素
赋值
assign()函数,类似string的用法
删除
vec.pop_back()函数删除最后一个元素
vec.erase()函数
vec.erase(vec.begin()+2); 删除下标为2的元素
vec.erase(vec.begin()+2,vec.end()) 删除下标2及以后的所有元素
vec.clear()删除vec中所有元素
srand((unsigned int)time(0));
vec.erase()函数
vec.erase(vec.begin()+2); 删除下标为2的元素
vec.erase(vec.begin()+2,vec.end()) 删除下标2及以后的所有元素
vec.clear()删除vec中所有元素
交换
vec2.swap(vec1); 交换vec2,vec1排序
sort(vec.begin(),vec.end());
乱序算法
random_shuffle(vec.begin(),vec.end())
srand((unsigned int)time(0));
动态创建二维vector数组
vector<vector <int> > ivec;
ivec.resize(m);
for(int i=0;i<m;i++) ivec[i].resize(n);
ivec.resize(m);
for(int i=0;i<m;i++) ivec[i].resize(n);
或
vectot<string> ivec;