您的位置:首页 > 编程语言 > C语言/C++

C++vector基础容器3.0

2016-08-09 20:11 411 查看
调用头文件:
#include<vector>
using namespace std;
详细用法(部分):
vector<Type> k;      ------      定义一个vector的变量(定义时已经初始化)      例如: vector<int> k;
vector<Type> k(n,i);      ------      定义一个vector的变量,其中包含n个i(Type类型)
vector<Type> k(n);      ------      定义一个大小为n的vector变量

int a[4] = {0,1,2,3,3};
vector<int> k(a,a+5);      ------      k被初始化为a中的前5个值(注意:后一个指针要指向将被拷贝的末元素的下一位
置!相当于[begin, end))

k.erase(p)      ------      删除pos位置的数据,传回下一个数据的地址
k.erase(beg,end)      ------      删除[beg,end)区间的数据,传回下一个数据的位地址
k.clear()      ------      移除容器中所有数据
k.empty()      ------      查看是否为空范例,是的话返回1,不是返回0

k.insert(p,i)      ------      在p位置前插入数据i,会返回新数据的位置
k.insert(p,n,i)      ------      在p位置前插入n个i
k.insert(p,beg,end)      ------      在p位置插入[beg,end)区间的数据
k.assign(n,i)      ------      将n个i的拷贝赋值给k

k.push_back(i)      ------      从已有元素后面增加元素i(队伍大小不预设)
k.pop_back()      ------      清除最后一个元素

k.front()      ------      显示第一个元素      例如n = k.front();
k.back()      ------      显示最后一个元素
k.begin()      ------      显示第一个数据的地址
k.end()      ------      显示最后一个数据的后面一个的地址
k.size()      ------      输出现有元素的个数
k[i]      ------      数组中的第i+1个元素

sort(k.begin()+1, k.end());      ------      对k中的元素进行排序

lower_bound(C[i].begin(), C[i].end(), x, comp);      ------      在k中二分查找在comp排序规则下第一个大于等于X的元素,返回其下标(迭代器)

具体例子:
bool comp(int x, int y)
{
if(L[x]<L[y])
return 1;
return 0;
}
sort(C[i].begin(), C[i].end(), comp);
auto it = lower_bound(C[i].begin(), C[i].end(), n+1, comp);
那么就相当于找第一个满足L[k]>=L[n+1]的下标k!
http://www.jb51.net/article/41648.htm
问题概述:有一行括号序列,检查这行括号是否配对
输入样例:                        对应输出:
3                                        No
[(])                                      No
(])                                       Yes
([[]()]

#include<stdio.h>
#include<vector>
#include<string>
using namespace std;
int main(void)
{
int T, i;
scanf("%d", &T);
while(T--)
{
char str[10005];
scanf("%s", str);
vector<char> vec;
vec.push_back(' ');
for(i=0;str[i]!='\0';i++)
{
vec.push_back(str[i]);
if(vec.back()-1==*(vec.end()-2) || vec.back()-2==*(vec.end()-2))
{ /* "("和")"的ASCLL码差为1、"["和"]"的ASCLL码差2*/
vec.pop_back();
vec.pop_back(); /*如果括号配对成功,将这对括号弹出*/
}
}
if(vec.size()==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

/*
#include<stdio.h>
#include<vector>
using namespace std;
int main(void)
{
vector<int> k;
k.assign(5, 1);
k.push_back(5);
k.push_back(6);
k.push_back(7);
k.insert(k.begin()+1,3,2);
while(k.empty()==0)
{
printf("%d\n", *(k.end()-1));
k.pop_back();
}
return 0;
}此程序输出结果为"7 6 5 1 1 1 1 2 2 2 1 "
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: