/* vector基础容器:
调用头文件:
#include<vector>
using namespace std; (vector模板需要定义容器类型,所以必须要输入using namespace std)
详细用法(部分):
vector<Type> k; ------ 定义一个queue的变量(定义时已经初始化) 例如: queue<int> k;
vector<Type> k(n,i); ------ 定义一个queue的变量,其中包含n个i(Type类型)
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.push_back(i) ------ 从已有元素后面增加元素i(队伍大小不预设)
k.pop_back() ------ 清除最后一个元素
k.front() ------ 显示第一个元素 例如n = k.front();
k.back() ------ 显示最后一个元素
k.begin() ------ 显示第一个数据的地址
k.end() ------ 显示最后一个数据的后面一个的地址
k.size() ------ 输出现有元素的个数
k[i] ------ 数组中的第i+1个元素
*/
// 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.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 2 2 2 5"
*/
vector数组
最新推荐文章于 2024-07-11 09:11:19 发布