最近写pta 上的题目,由于只会c,很多东西还要手打,很慢。
于是开始学习c++的STL一些常见简单的操作。新手友好,高手劝退。
- vector:不定长数组
- 头文件
#include<vecotor>
- 定义:
vector<int >op
这样相当于一维数组 vector<int>op[200]
相当与二维数组,不过第一维的大小是固定的200- 此外
vector<string>
类似于string a[ ]的字符串数组。
一些常见操作
1.push_back() 向尾部添加元素
2.pop_back() 删除尾部元素
3.size() 返回数组大小(多少个元素)
4.clear()清空数组
5.empty() 判断为空,若为空,返回true
6.front() 返回第一个元素
7.back()返回最后一个元素
8. begin() 返回指向第一个元素的迭代器(用法,比如sort( op.begin(),op.end(),cmp);
常识理解:
1.输入篇:
- C语言数组 int op[50],可以直接op[0]=值。
- vector要push_back才行
比如,这样是不对的
vector<int >ve[50];
int n=41;
ve[0][0]=n;
printf("%d\n",n);
printf("%d",ve[0][0]);
如果先pushback,在用下标进行初始化赋值,这样可以输出,就相当于二维数组了。而vector的优势根据元素动态申请内存荡然无存。
如果再用push_back的话,用下标初始赋值的值就会消失。但是当用pushback赋值后,是可以通过下标来修改元素的值。
vector<int >ve[50];
int n=41;
ve[0].push_back(n);
ve[0][2]=6;
ve[0].push_back(3);
printf("%d\n",n);
printf("%d",ve[0][1]); //输出的会是3,而6在原位置也找不到了
2.赋值篇
vector< int > ivec( 7 ,9);
数组开了7个空间,元素全部置为9
#include<vector>
#include<stdio.h>
using namespace std;
int main(void)
{
vector<int >ve(7,9);
for(int i=0;i<=6;i++)
printf("%d\n",ve[i]);
}
或者可用一个数组对vector型的进行赋值
int op[5]={-1,2,3,4,5};
vector< int >ve(op,op+2);第一个参数是起始位置,第二个是结束位置的下一位指针。(同sort),此时ve[0]=-1,ve[1]=2;