STL笔记一

   【题目1】三句话实现:整数的输入,排序,输出:(by Sandy)

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
int main()
{
    vector<int> v1((istream_iterator<int>(cin)),(istream_iterator<int>()));
    sort(v1.begin(),v1.end());
    copy(v1.begin(),v1.end(),ostream_iterator<int>(cout," "));
    return 0;
}

  【题目2】三句话实现:单词的输入,剔除其中重复的单词,并按字母顺序输出。

	vector<string> v1((istream_iterator<string>(cin)),(istream_iterator<string>()));
	sort(v1.begin(),v1.end());
	unique_copy(v1.begin(),v1.end(),ostream_iterator<string>(cout," "));

  
  【woj1170】Problem 1170 – Sorting   重写了遍。

    vector<int>  v1((istream_iterator<int>(cin)),(istream_iterator<int>()));
    v1.erase(v1.end()-1);
    sort(v1.begin(),v1.end());
    unique_copy(v1.begin(),v1.end(),ostream_iterator<int>(cout," "));

  这题目用vector的效率不高,用list快些。

  【总结】
  明白Sandy的意思是让我练习下STL,我说了很久要学要学,但是好久之后依然还没动,被这个被那个事情给耽搁着。前天晚上和Sandy的聊天,让我明白了,这些知识并不是要等某一天某一大段时间再去学习,而是点滴积累的。

  以上的两道题目牵涉到的有:(这几天总结下)
  

  • 输入流迭代器
  •   

  • sort
  •   

  • vector,list,deque
  •   

  • unique_copy 和 copy

5 Comments are ready?

  1. sandy said on: 2009年08月26日 23:51

    别别别,我不敢当。这个例子是很多地方可以见到的。那个单词的例子,你去翻翻之前我给你的STL的书,上面有,只不过我稍微简化了下。
    不过是希望你能了解STL的威力罢了,它不是什么空架子,它是工业标准,用好了的话将是你履历表上非常浓重的一笔。
    还有,别再写:
    for(int i=1;i<(int)vector1.size();i++)
    {
    vector1[i]=xxx….
    }
    这种循环了……超别扭 :neutral: 。除非实在必要。

    [回复]

  2. sandy said on: 2009年08月26日 23:54

    果然,wp的首页实在是太xxx了……也用不着这么补全标签吧。。
    ubb王道,ubb王道。

    [回复]

    boluor 回复  于   

    我估计是more标签所致,回头研究下。

    [回复]

  3. Sandy said on: 2009年08月27日 10:27

    还有啊,你后面那个woj p1170的题,怎么可能用list更快?用脑子稍微想想就会明白list做这道题是效率极低的。你怎么会冒出那种想法?
    vector显然是效率最高的。你的那个代码比别人慢是因为istream的速度比scanf慢,绝对不是vector的原因。
    我在woj上跑的结果:
    你原来的代码: 95121 test1_1 1170 Accepted 内存:9312 耗时:1640 G++
    改为list: 95122 test1_1 1170 Time Limit Exceed 内存:16880 耗时:2314 G++
    改用scanf: 95123 test1_1 1170 Accepted 内存:9108 耗时:870 G++
    继续改用printf:95124 test1_1 1170 Accepted 内存:9120 耗时:830 G++

    看吧,你的list直接TLE了。

    [回复]

    boluor 回复  于   

    嗯,现在明白了。对list理解有问题之前。

    [回复]

  4. ivan said on: 2009年08月27日 13:27

    list不能用sort

    [回复]

    Sandy 回复  于   

    有list::sort();

    [回复]

    felix021 回复  于   

    re.

    [回复]

  5. felix021 said on: 2009年08月27日 15:11

    http://acm.whu.edu.cn/blog/read.php?96

    [回复]

    boluor 回复  于   

    嗯,这个早下载看了。

    [回复]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*

*

click to changeSecurity Code