大爷大妈公园野战:请问哪位朋友能介绍一下vc++中的vector的有关知识??

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 07:33:16

#include <stdio.h>
// sort的定义
#include <algorithm>
// vector的定义
#include <vector>
// deque的定义
#include <deque>
// 同样,引入std命名空间
using namespace std;
// 用数组保存
int friends[1000];
// 用vector保存
vector<int> vtFriends;
// 用deque保存
deque<int> dqFriends;

int main()
{
int T;
scanf("%d", &T);
int iCase;
for (iCase = 1; iCase <= T; iCase++)
{
// 每次要将vector和deque请空
vtFriends.clear();
dqFriends.clear();
printf("Scenario #%d:\n", iCase);
int n, f, tn;
scanf("%d%d", &n, &f);
// 由于后面要找三次,所以先把n的值保存下来
tn = n;
int i;
for (i = 0; i < f; i++)
{
// 保存到数组
scanf("%d", &friends[i]);
// 保存到vector
vtFriends.push_back(friends[i]);
// 保存到deque
dqFriends.push_back(friends[i]);
}
// 排序,如果不给第三个参数,默认是按升序排
// sort实现的是快速排序,它是不稳定排序,
// 需要稳定排序时,用stable_sort,用法与sort完全一样
// 对数组进行排序
sort(friends, friends + f);
// 对vector进行排序
sort(vtFriends.begin(), vtFriends.end());
// 对deque进行排序
sort(dqFriends.begin(), dqFriends.end());
// 在数组里查找
for (i = f - 1; i >= 0; i--)
{
n -= friends[i];
if (n <= 0)
break;
}
// 在vector里查找
// 先恢复n的值
n = tn;
for (i = f - 1; i >= 0; i--)
{
n -= vtFriends.at(i);
if (n <= 0)
break;
}
// 在deque里查找
// 先恢复n的值
n = tn;
for (i = f - 1; i >= 0; i--)
{
// deque的at方法效率比vector低,
// 因为deque的元素在内存上不完全是连续的
n -= dqFriends.at(i);
if (n <= 0)
break;
}
if (i < 0)
puts("impossible");
else
printf("%d\n", f - i);
puts("");
}
return 0;
}
使用的我们学院一个牛人写的一篇东西哈,这里介绍vector,deque和sort的用法,这些都是STL的内容,给你一个网站吧,http://www.stlchina.org/
不过一般好像都不提倡一开始就在程序中使用STL,那些算法都自己写写最好,然后等学会了再用也会理解得更深入的!