cpp第一次用set和vector

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<set>
 6 #include<vector>
 7
 8 #define rep(i,m,n)for(int i=m;i<n;i++)
 9 #define clr(a,x)memset(a,x,sizeof(a))
10
11 using namespace std;
12
13 set<int> x;
14 vector<int> ans;
15 int t,n,a;
16 int main()
17 {
18     cin>>t;
19         while(t--){
20         cin>>n;
21         x.clear();
22         ans.clear();
23          rep(i,0,n){
24              scanf("%d",&a);
25             if (x.find(a)==x.end()){
26                 x.insert(a);
27                 ans.push_back(a);
28             }
29          }
30         rep(i,0,ans.size()){
31             printf("%d",ans[i]);
32             if (i!=ans.size()-1) printf(" ");
33         }
34         printf("\n");
35     }
36     return 0;
37 }

2761: [JLOI2011]不重复数字

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 2237  Solved: 863
[Submit][Status][Discuss]

Description

给出N个数,要求把其中重复的去掉,只保留第一次出现的数。

例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。

Input

输入第一行为正整数T,表示有T组数据。

接下来每组数据包括两行,第一行为正整数N,表示有N个数。第二行为要去重的N个正整数。

Output

对于每组数据,输出一行,为去重后剩下的数字,数字之间用一个空格隔开。

Sample Input

2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6

Sample Output

1 2 18 3 19 6 5 4
1 2 3 4 5 6

HINT

对于30%的数据,1 <= N <= 100,给出的数不大于100,均为非负整数;

对于50%的数据,1 <= N <= 10000,给出的数不大于10000,均为非负整数;

对于100%的数据,1 <= N <= 50000,给出的数在32位有符号整数范围内。

提示:

由于数据量很大,使用C++的同学请使用scanf和printf来进行输入输出操作,以免浪费不必要的时间。

Source

时间: 2024-11-09 11:51:45

cpp第一次用set和vector的相关文章

vector 容器迭代器(二)

vector容器迭代器(一)里面大牛对vector介绍的已经很详细了,下面结合自己的项目开发的问题谈谈使用 一.关于capacity和size[1] 在下想用数组引用的方式遍历vector中的元素,结果一直采用capacity,最后的结果就是总是出错,查了半天才知道原来这个capacity是只扩不收的,我因为 需要删除了vector(采用erase,第三部分)中的数,但是capacity没有更新,结果我按照capacity的指示寻找元素,明显就会越界 [1] ---->Size指目前容器中实际有

C++ vector类型要点总结(以及各种algorithm算法函数)

概述 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现. 容器向量也是一个类模板.vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,但是一个容器中的对象必须是同一种类型.简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. vector是一个类模板,

STL中的vector 和list

参考书目:visual c++ 入门经典 第七版 Ivor Horton著 第十章 认识两个容器:vector和list 容器:是STL(Standard Template Library 标准模板库)的六大组件之一.(容器,容器适配器,迭代器,算法,函数对象,函数适配器) 容器是用来存储和组织其他对象的对象.提供要存储的对象的类型就可以从STL模板中创建容器类. Vector <T>:表示一个在必要时刻可增加容量的数组,该数组存储T类型的元素.只能在矢量容器的末尾添加新元素. Vector

MSDN?中?对vector::erase()的解释.xml

pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9;font-style:italic;font-weight:bold;} .selfFuc{color:#f1f9be;} .bool{color:#69305e;} .condition{color:#628698;font-weight:bold;} .key{color:#e336b6;} .

C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动态数组)STL vector进行分析和总结. 引言 因为前段时间对台大的机器学习基石和技法课程进行了学习,发如今详细的实现中经常涉及到各种类型的数据结构,比方线性表.二叉树.图等,在使用这些数据结构时感到有些吃力.主要是对一些主要的数据结构理解的不够.所以趁着暑假假期.近期一段时间总会抽出时间复习一

vector与list和各自iterator剖析2

迭代器是连接容器和算法的纽带,它们为数据提供了一种抽象的观点,使写算法的人不必关心多种多样的数据结构的具体细节. 1,迭代器概述 迭代器是指向序列元素的指针的一种抽象.通过使用迭代器,我们可以访问序列中的某个元素.改变序列中的某个元素的值.使迭代器向前或向后行走等等. 依据有效执行操作的情况,迭代器可以分为五类:输入迭代器.输出迭代器.前向迭代器.双向迭代器和随机存取迭代器.STL中用五个类来代表这五种迭代器类别: 其中 · Input Iterator 所指的对象不允许外界改变 · Outpu

vector容器使用总结?.xml

pre{ line-height:1; color:#38ede1; background-color:#5b2814; font-size:16px;}.sysFunc{color:#008080;font-style:italic;font-weight:bold;} .selfFuc{color:#008080;} .bool{color:#952fa4;} .condition{color:#ca5cb9;font-weight:bold;} .key{color:#85d7e6;} .

vector存入共享内存(了解)

昨天在上篇blog里描写了如何把STL容器放到共享内存里去,不过由于好久不写blog,发觉词汇组织能力差了很多,不少想写的东西写的很零散,今天刚好翻看自己的书签,看到一篇挺老的文章,不过从共享内存到STL容器讲述得蛮全面,还提供了学习的实例,所以顺便翻译过来,并附上原文地址. 共享内存(shm)是当前主流UNIX系统中的一种IPC方法,它允许多个进程把同一块物理内存段(segment)映射(map)到它们的地址空间中去.既然内存段对于各自附着(attach)的进程是共享的,这些进程可以很方便的通

vector 释放内存 swap

相 信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛.的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却在C++ STL中散发着无穷的魅力.本文不仅详细地阐述STL泛型算法swap,并借助泛型算法这股东风,展现STL容器中swap成员函数的神奇魅力.注意哦, 泛型算法swap和容器中的swap成员函数,这是两个不同角度和概念哦!  一.泛型算法swap 老规矩,我们先来看看swap的函数原型: [cp