Python performance notes...

Brett g Porter BgPorter at NOacmSPAM.org
Sat May 27 17:13:12 EDT 2000


"Moshe Zadka" <moshez at math.huji.ac.il> wrote in message
news:Pine.GSO.4.10.10005271201030.4282-100000 at sundial...
> On Thu, 25 May 2000, Brett g Porter wrote:
>
> Well, of course, it is much longer in C++, but just for the heck of it,
> here's the real challenge: change it so you'd print
>
> word lineno lineno .....
>
> And the words have to be sorted.
// splitter.cpp : Defines the entry point for the console application.
//  (c) 2000 Bg Porter

#include "stdafx.h"

#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <sstream>
#include <vector>


using namespace std;

int main(int argc, char* argv[])
{
   ifstream f(argv[1]);

   string line;
   string newWord;
   int lineNum = 0;
   map<string, vector<int> > unique;

   while (f)
   {
      getline(f, line);
      istringstream lineStream(line.c_str());
      ++lineNum;
      while (lineStream)
      {
         lineStream >> newWord;
         unique[newWord].push_back(lineNum);
      }
   }

   for (map<string, vector<int> >::iterator i = unique.begin();
   i != unique.end(); ++i)
   {
      cout << i->first;
      for (int j = 0; j < i->second.size(); ++j)
         cout << " " << i->second[j];
      cout << endl;
   }

    return 0;
}



Sorted already, by the design of std::map.

> (It took me 3 minutes to take Aahz's script and change it, and I had one
> bug: forgot to import sys and string)
>
> In 1 more minute, it is possible to change the definition of a word to "a
> consecutive alphabetic characters".
1 minute or less.
In 30 more seconds, it is possible to
> make strings case insensitive,
the same.

> and 30 more seconds to disregard "_"s.
If I understood that phrase, I could answer it.

>
> How much time would it take in C++?
>
> Remember that map<string, vector<int>> is invalid.
Are you making up rules here? Of course you meant map<string, vector<int> >.


> --
> Moshe Zadka <moshez at math.huji.ac.il>
> http://www.oreilly.com/news/prescod_0300.html
> http://www.linux.org.il -- we put the penguin in .com
>
>





More information about the Python-list mailing list