Re[23]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 16:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Тем более, что проблема с кодировками решается двумя вызовами imbue для

C>потоков.

Вот и нужно было их привести. А то и разобраться то невозможно.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 16:25
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, VladD2, Вы писали:



VD>>Таки все же интересно глянуть на тоже самое на АТЛ-е.



AG>ATL — в студию

...

Ну, вот совсем другое дело! Истенный С++-стиль! Чтобы разобраться нужно потрахаться. Код "улучшен" отсуствием декомпозиции. В общем, отличный наглядный пример того как написать шифрогрмму.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 16:25
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

Запустил этот тест. Результат получился еще более потрясающим чем предыдущим:
 00427CD0
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 29.08.05 16:33
Оценка:
Здравствуйте, Quintanar, Вы писали:


Q>Где смеяться? Что не так? Хэш таблица ускоряет доступ к элементам за счет памяти не зависимо от того, что хэшируется.


+

Пошел читать матчасть
Re[23]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 16:34
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ArtemGorikov, Вы писали:


VD>Запустил этот тест. Результат получился еще более потрясающим чем предыдущим:

VD>
VD> 00427CD0
VD>


Сори, это я файл забыл подставить. Если подставить путь к файлу, то получается более осмысленный вариант:

00427C6000427C200015536000427C30100427C4C00427C200015536000427C30900427C4C00427C200015536000427C30100427C4C004
27C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C20001560C800427C30100427C4C00427C20001560
C800427C30100427C4C00427C200015536000427C30300427C4C00427C200015536000427C30200427C4C00427C200015536000427C301
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C30500427C4C00427C20001560C800427C30100427C4C004
27C20001560C800427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30200427C4C00427C20001553
6000427C30100427C4C00427C200015536000427C30200427C4C00427C200015536000427C30100427C4C00427C200015536000427C303
00427C4C00427C20001560C800427C30100427C4C00427C20001560C800427C30100427C4C00427C200015536000427C30200427C4C004
27C200015536000427C30200427C4C00427C200015536000427C30100427C4C00427C200015536000427C30200427C4C00427C20001553
6000427C30200427C4C00427C200015536000427C30200427C4C00427C200015536000427C30200427C4C00427C200015536000427C303
00427C4C00427C200015536000427C30300427C4C00427C200015536000427C30300427C4C00427C200015536000427C30100427C4C004
27C20001560C800427C30200427C4C00427C200015536000427C30100427C4C00427C20001560C800427C30100427C4C00427C20001553
6000427C30100427C4C00427C20001560C800427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C301
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C30200427C4C00427C200015536000427C30200427C4C004
27C20001560C800427C30100427C4C00427C20001560C800427C30100427C4C00427C200015536000427C30100427C4C00427C20001553
6000427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C20001560C800427C302
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C30200427C4C00427C200015536000427C30100427C4C004
27C200015536000427C30100427C4C00427C200015536000427C30300427C4C00427C200015536000427C30100427C4C00427C20001560
C800427C30100427C4C00427C200015536000427C30100427C4C00427C20001560C800427C30100427C4C00427C200015536000427C301
00427C4C00427C200015536000427C30300427C4C00427C200015536000427C30100427C4C00427C200015536000427C30200427C4C004
27C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C20001560
C800427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C20001560C800427C305
00427C4C00427C200015536000427C30300427C4C00427C200015536000427C30300427C4C00427C200015536000427C30100427C4C004
27C200015536000427C30600427C4C00427C20001560C800427C30100427C4C00427C200015536000427C30100427C4C00427C20001553
6000427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C20001560C800427C301
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C30100427C4C00427C200015536000427C30300427C4C004
27C20001560C800427C30100427C4C00427C200015536000427C30200427C4C00427C200015536000427C30100427C4C00427C20001553
6000427C30100427C4C00427C20001560C800427C30100427C4C00427C20001560C800427C30100427C4C00427C200015536000427C304
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C30400427C4C00427C200015536000427C30100427C4C004
27C20001560C800427C30100427C4C00427C200015536000427C30200427C4C00427C200015536000427C30100427C4C00427C20001553
6000427C30100427C4C00427C200015536000427C30300427C4C00427C200015536000427C30100427C4C00427C20001560C800427C301
00427C4C00427C200015536000427C30100427C4C00427C200015536000427C301000427C4C00427BE4Press any key to continue .
. .


... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 29.08.05 17:10
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Это из серии "гляжу в книгу — вижу фигу". Прочти еще раз зачем там нужен список или дерево. Могу дать наводящее слово "коллизии".


Читал невнимательно (просмотрел). Уже понял свою ошибку, незачем приводить "серии".
Re[24]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 29.08.05 17:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, VladD2, Вы писали:



VD>Сори, это я файл забыл подставить. Если подставить путь к файлу, то получается более осмысленный вариант:


VD>


На какой файл натравили? Че за бред вообще вывело? У меня на текстовом файле прекрасно работает. Количество траха такое же, как в Вашем варианте, если отбросить "синтаксический оверхед".
Re[25]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 29.08.05 17:31
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, VladD2, Вы писали:


VD>>Здравствуйте, VladD2, Вы писали:



VD>>Сори, это я файл забыл подставить. Если подставить путь к файлу, то получается более осмысленный вариант:


VD>>


AG>На какой файл натравили? Че за бред вообще вывело? У меня на текстовом файле прекрасно работает. Количество траха такое же, как в Вашем варианте, если отбросить "синтаксический оверхед".


Скопиковал код из своего же поста в новый проект, собрал — работает.
Собирал и с managed extensions и без, все равно работает. Натравил на exe-шник — все равно все работает, вывела кучу "слов" на консоль. Как Вы ее собирали, ума не приложу. Поделитесь опытом
Re[24]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 29.08.05 17:54
Оценка:
Здравствуйте, VladD2, Вы писали:



/*поскипано*/



Нашел, где была проблема. К сожалению, std::cout не принял unicode, а я раньше тестил в ansi/mbcs сборке. Надо было везде на консоль выводить ansi text. Вот правильный код:




// StringTest.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <tchar.h>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS    // some CString constructors will be explicit

#include <atlbase.h>
#include <atlfile.h>
#include <atlstr.h>
#include <atlcoll.h>


int _tmain(int argc, _TCHAR* argv[])
{
    typedef char XCHAR;        // define which format do we work with: ansi/mbcs or unicode
    typedef ChTraitsCRT<XCHAR> ChTraitsX;    // define char traits for strings (will use it also seperately)
    typedef CStringT< XCHAR, StrTraitATL<XCHAR, ChTraitsX> > CStringX;    // our strings;
    typedef CAtlMap<CStringX, size_t> str_map;        // string map ( uses hash capability of atl strings )

    CAtlFile file;    // atl wrapper for files
    CAtlFileMapping<XCHAR> mapping;    // atl wrapper for memory-mapped files. Allows access to files up to 2 GB length as 

memory area.
    if(argc < 2
        || FAILED(file.Create(argv[1], GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING))
        || FAILED(mapping.MapFile(file))
        )
    {
        std::cout << "error opening file";
        return 0;
    }

    static CStringX space_mask(" \t\r\n,./?;:\"'!()-+*=\\|{}<>[]");    // mask with seperator symbols
    
    str_map words;    // map object
    
    for(const XCHAR *it = mapping, *it_end = (const XCHAR*)mapping + mapping.GetMappingSize();
        it < it_end; 
        it = ChTraitsX::CharNext(it))    // function needed to operate with mbcs symbols correctly
    {
        const XCHAR* it_prev = it;
        while(it_prev != it_end && 0 <= space_mask.Find(*it_prev))    // skip seperator symbols at the beginning
            it_prev = ChTraitsX::CharNext(it_prev);
        it = it_prev;
        while(it != it_end && space_mask.Find(*it) < 0)    // find seperator
            it = ChTraitsX::CharNext(it);
        if(it != it_prev)
        {
            CStringX word(it_prev, it - it_prev);        // extract the word
            str_map::CPair* pPair = words.Lookup(word);    // lookup if the word is allready in the map
            if(pPair)
                ++pPair->m_value;    // if yes, increase counter
            else
                words[word] = 1;    // if no, reset counter to 1
        }
    }
    std::cout << "======Begin dump=======\r\n";
    for(POSITION pos = words.GetStartPosition(); pos; )    // enumerate pairs in the map and dump them to cout
    {
        str_map::CPair* pPair = words.GetNext(pos);
        std::cout << "word \"" << CStringA(pPair->m_key) << "\" accured " << pPair->m_value << "times\r\n";
    }
    std::cout << "======End dump=======\r\n";
    return 0;
}
Re[25]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 18:46
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>На какой файл натравили?


На тот же самый на который и два других примера, т.е. на исхоный шарповский.

AG> Че за бред вообще вывело?


Это тебя нужно спросить. Ты бы хоать перед тем как браво посотить этот бред проверил бы что он выдает. Идиально конечно вообще добиться аналогичного результата.

AG> У меня на текстовом файле прекрасно работает. Количество траха такое же, как в Вашем варианте, если отбросить "синтаксический оверхед".


Я не знаю что у тебя работает. Но читать твой код очень не просто. А результат вообще проверить невозможно.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 18:46
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Скопиковал код из своего же поста в новый проект, собрал — работает.

AG>Собирал и с managed extensions и без, все равно работает. Натравил на exe-шник — все равно все работает, вывела кучу "слов" на консоль. Как Вы ее собирали, ума не приложу. Поделитесь опытом


Ну, незнаю. Может это из-за того что я на 2005 студии собираю. Чесно говоря сейчас копаться в отладчике влом. Один хрен выделение слов похоже не врено, так как нужно не разделители использовать, а алгоритм.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.05 18:46
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:


------ Build started: Project: ConcordanceAtl, Configuration: Debug Win32 ------
Compiling...
ConcordanceAtl.cpp
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(28) : error C2065: 'memory' : undeclared identifier
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(28) : error C2146: syntax error : missing ';' before identifier 'area'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(28) : error C2065: 'area' : undeclared identifier
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(29) : error C2059: syntax error : 'if'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(33) : error C2143: syntax error : missing ';' before '{'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(34) : error C2228: left of '.cout' must have class/struct/union
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(34) : error C2228: left of '.<<' must have class/struct/union
        type is ''unknown-type''
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(38) : error C2146: syntax error : missing ';' before identifier 'space_mask'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(38) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(38) : error C2377: 'CStringX' : redefinition; typedef cannot be overloaded with any other symbol
        c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(22) : see declaration of 'CStringX'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(40) : error C2146: syntax error : missing ';' before identifier 'words'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : error C2143: syntax error : missing ',' before '*'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : error C2146: syntax error : missing ')' before identifier 'XCHAR'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : error C2059: syntax error : ')'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(44) : error C2228: left of '.CharNextW' must have class/struct/union
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(44) : error C2059: syntax error : ')'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(45) : error C2143: syntax error : missing ';' before '{'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(46) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(46) : error C2143: syntax error : missing ';' before '*'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(46) : error C2086: 'const int XCHAR' : redefinition
        c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(42) : see declaration of 'XCHAR'
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(47) : error C2228: left of '.Find' must have class/struct/union
        type is ''unknown-type''
c:\myprojects\tests\concordanceatl\concordanceatl\concordanceatl.cpp(47) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Build log was saved at "file://c:\MyProjects\Tests\ConcordanceAtl\ConcordanceAtl\Debug\BuildLog.htm"
ConcordanceAtl - 24 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


ЗЫ

Ты бы создал просто Win32 Console-ый проект и задал бы в нем поддржку ATL. Тогдв жить стало бы проще. А то что-то мучаешся вручную и я вместе с тобой. Да и пример все же лучше повторять без халтуры. А то видимость меньшего объема она и есть видимость. Так, солова у тебя выделяются халтруно и сотрировку результата ты не делашь. А все это добавит объема и при твоем методе кодирования ухудшит читаемость. Собственно код уже читается очень плохо в сравнении с эталонным. В общем то об этом я и вел речь. Думаю когда ты добъешь свой год и сделашь его полностью аналогичным и работоспособным, то трах и неудобство ты сможешь оценить сам. О них я и говорил.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 30.08.05 05:52
Оценка: +1 -3
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ArtemGorikov, Вы писали:




VD>ЗЫ


VD>Ты бы создал просто Win32 Console-ый проект и задал бы в нем поддржку ATL. Тогдв жить стало бы проще. А то что-то мучаешся вручную и я вместе с тобой.


Я так и сделал


VD>Да и пример все же лучше повторять без халтуры. А то видимость меньшего объема она и есть видимость. Так, солова у тебя VD>выделяются халтруно и сотрировку результата ты не делашь.


А как ты узнал, что выделяются халтурно? Ты же не смог его собрать. Вот ты требуешь сортировки, при этом против дерева в std::map. Ты бы определился уже, потому что использование дерева как раз даст отсортированный результат, а такого требования первоначально не было.


VD> А все это добавит объема и при твоем методе кодирования ухудшит читаемость. Собственно код уже читается очень плохо в сравнении с эталонным.


Ах ну да, твой код у нас теперь эталон. А я и не знал.


VD> В общем то об этом я и вел речь. Думаю когда ты добъешь свой год и сделашь его полностью аналогичным и работоспособным, то трах и неудобство ты сможешь оценить сам. О них я и говорил.


Мой код полностью работоспособен, я его протестировал в анси и юникод — сборке на студии 2003. То, что ты пользуешься бетой 2005 — не мои проблемы, хотя тут, скорее всего, проблема драйвера клавиатуры. Я код и не задумывал как аналогичный, он лучше. То, что у кого-то руки не от того места растут — иначе как объяснить то, что он не догадался исправить переносы, добавленные в код его чудесным ПО на сервере, написанном на самом лучшем в мире языке — C# .


PS Предлагаю закончить эту дискуссию. Я для себя сделал определенные выводы, больше спорить с тобой не буду. То, что ты не в состоянии (или придуряешься) собрать 1 cpp и обвиняешь в этом меня, не делает тебе чести .
Re[27]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.08.05 10:05
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

VD>>Ты бы создал просто Win32 Console-ый проект и задал бы в нем поддржку ATL. Тогдв жить стало бы проще. А то что-то мучаешся вручную и я вместе с тобой.


AG>Я так и сделал


Тогда где строчка:
#include "stdafx.h"



AG>А как ты узнал, что выделяются халтурно?


Код прочел. Ты меня за совсем уж полного болвана не считай.

AG> Ты же не смог его собрать.


Да собрать то я его в конце концов смог. Только на коносли каша. А что там нужно где подкручивать я не помню и желания разбираться нет, так как у меня есть средство разработки вообще не имеющее подобных проблем.

AG> Вот ты требуешь сортировки, при этом против дерева в std::map.


Я не против дерева "вообще". В данном случае оно конечно позволяет уменьшить код на две строки. Но эффективность будет ведь ниже.

Ну, и главное, пример ведь не аналогичен. Хотя бы взял для приличия тогда каой-нить CRBMap.

AG> Ты бы определился уже, потому что использование дерева как раз даст отсортированный результат, а такого требования первоначально не было.


Что значит не было? Ты оригинальный код читал? Там что сортировка от болды влеплена?

VD>> А все это добавит объема и при твоем методе кодирования ухудшит читаемость. Собственно код уже читается очень плохо в сравнении с эталонным.


AG>Ах ну да, твой код у нас теперь эталон.


Естественно. Он был создан первым. Ты значение слова эталон хорошо понимашь?
БСЭ:

Эталон (франц. etalon), образец, мерило, идеальный или установленный тип чего-либо; точно рассчитанная мера чего-либо, принятая в качестве образца.


VD>> В общем то об этом я и вел речь. Думаю когда ты добъешь свой код и сделашь его полностью аналогичным и работоспособным, то трах и неудобство ты сможешь оценить сам. О них я и говорил.


AG>Мой код полностью работоспособен,


Я бы сказал, что он просто некондиционен. Он и не аналогичен, и выдает абракодабру.

AG> я его протестировал в анси и юникод — сборке на студии 2003.


И что он выдает результаты аналогичные исходному примеру?

AG> То, что ты пользуешься бетой 2005 — не мои проблемы,


Твои, твои. Код должен давать один результат не зависимо от компилятора. Да и не только в абракодабре дело.

AG> хотя тут, скорее всего, проблема драйвера клавиатуры.


Чего?

AG> Я код и не задумывал как аналогичный, он лучше.




AG> То, что у кого-то руки не от того места растут — иначе как объяснить то, что он не догадался исправить переносы, добавленные в код его чудесным ПО на сервере, написанном на самом лучшем в мире языке — C# .


Про руки чья бы корова мычала.

AG>PS Предлагаю закончить эту дискуссию.


Да, пожалй. На конструктив ты не настроен.

AG> Я для себя сделал определенные выводы, больше спорить с тобой не буду. То, что ты не в состоянии (или придуряешься) собрать 1 cpp и обвиняешь в этом меня, не делает тебе чести .


Это из серии "- Нет, дотктор. Это у вас картиночки такие.".
Ты не смог даже воспроизвести примитивный пример, а потнов целая гора. То же что твои примеры не компилируются или выдают абракодабру виноват исключительно ты. И не нужно заставлять других пыжится и исправлять твои ошибки. Например, мой код скомпилируется с первого раза. Нужно только заменить им фал дефолтного консольного проекта.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Про итераторы
От: Belsen  
Дата: 30.08.05 19:21
Оценка: +1
Здравствуйте, jedi, Вы писали:

J>#include <map>
J>#include <string>
J>#include <fstream>
J>#include <iostream>

J>using namespace std;

J>int main(int argc, char * argv[])
J>{
J>    string str;
J>    map<string, long> concordance;
J>    ifstream input(argv[1]);
    
J>    if (!input.is_open())
J>        cerr << "Не могу открыть файл" << endl;

J>    while (input >> str)
J>        ++concordance[str];

J>    for (map<string, long>::const_iterator i = concordance.begin(); i != concordance.end(); ++i)
J>        cout << "Слово " << i->first << " встретилось " << i->second << " раз[а]" << endl;

J>    return 0;
J>}


Можно и на С# практически аналогично:
using System;
using System.Collections.Generic;
using System.IO;

static class Program
{
    static void Main(string[] args)
    {
        SortedDictionary<string,int> concordance = new SortedDictionary<string,int>();

        foreach (string word in File.ReadAll(args[0]).Split(" \n\r\t!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~".ToCharArray()))
            if (concordance.ContainsKey(word))
                concordance[word] += 1;
            else
                concordance.Add(word, 1);

        foreach (string key in concordance.Keys)
            Console.WriteLine("Слово {0,20} встретилось {1,3} раз[а].", key, concordance[key]);
    }
}

Вот только разделители будут учитываться все равно не все.
I might be wrong...
Re[13]: Про итераторы
От: DenisY Россия  
Дата: 31.08.05 04:42
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>От части. Но не только. Все же слишком много "шума" у СТЛ-овских итераторов. И два конца совершенно не нужных для простого перебора. И определение внутри типа контейнера.


Просто они более низкоуровневые. Соответственно возможностей больше, за счет этого "шума".
От этих двух подробностей (два конца, тип контейнера) можно избавиться, написав обертку поверх stl-итераторов.
Вот, набросал тут
Автор: DenisY
Дата: 30.08.05
Re[28]: Про итераторы
От: ArtemGorikov Австралия жж
Дата: 31.08.05 12:24
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ArtemGorikov, Вы писали:


VD>>>Ты бы создал просто Win32 Console-ый проект и задал бы в нем поддржку ATL. Тогдв жить стало бы проще. А то что-то мучаешся вручную и я вместе с тобой.


AG>>Я так и сделал


VD>Тогда где строчка:

VD>
VD>#include "stdafx.h"
VD>


Могу прислать проект, тока позже — он дома. Там есть и stdafx.h в т.ч.



AG>>А как ты узнал, что выделяются халтурно?


VD>Код прочел. Ты меня за совсем уж полного болвана не считай.


Т.е. скомпилил и отладил в голове? Ну ты прям супер-компьютер А числа большие складывать в уме можешь быстро? Если серьезно, то я в этом сильно сомневаюсь, после того, как тебя поставило в замешательство отсутствие #include "stdafx.h" в начале исходника.


AG>> Ты же не смог его собрать.


VD>Да собрать то я его в конце концов смог. Только на коносли каша. А что там нужно где подкручивать я не помню и желания разбираться нет, так как у меня есть средство разработки вообще не имеющее подобных проблем.


Каша была в первом варианте, которую ты с радостью привел. Я нашел ошибку — ты собрал проект в unicode, и на std::cout << some_unicode_text выводилась не строка, а ее адрес в памяти или еще чего-то. Вообще-то визард консольного проекта по умолчанию настройку ставит на ansi, поэтому я не догадался специально включить unicode и проверить. А вот ты ее включил сам — наверно для того, чтобы сказать "ага! я нашел баг!" — это из той же оперы, когда с ты двух компов завалил базу оутлука и сказал, что он г####.



VD>Что значит не было? Ты оригинальный код читал? Там что сортировка от болды влеплена?


VD>>> А все это добавит объема и при твоем методе кодирования ухудшит читаемость. Собственно код уже читается очень плохо в сравнении с эталонным.


Не знаю зачем влеплена; скорее всего от балды. Надо было подсчитать повторы слов и все.


AG>>Ах ну да, твой код у нас теперь эталон.


VD>Естественно. Он был создан первым. Ты значение слова эталон хорошо понимашь?

VD>БСЭ:
VD>

Эталон (франц. etalon), образец, мерило, идеальный или установленный тип чего-либо; точно рассчитанная мера чего-либо, принятая в качестве образца.


Ну я это и хотел сказать, что ты свой код назвал "образцовам, идеальным".


VD>>> В общем то об этом я и вел речь. Думаю когда ты добъешь свой код и сделашь его полностью аналогичным и работоспособным, то трах и неудобство ты сможешь оценить сам. О них я и говорил.


Дело привычки.


AG>> То, что ты пользуешься бетой 2005 — не мои проблемы,


VD>Твои, твои. Код должен давать один результат не зависимо от компилятора. Да и не только в абракодабре дело.


Пришлю проект — надеюсь проблем не будет загрузить?


VD>Ты не смог даже воспроизвести примитивный пример, а потнов целая гора. То же что твои примеры не компилируются или выдают абракодабру виноват исключительно ты. И не нужно заставлять других пыжится и исправлять твои ошибки. Например, мой код скомпилируется с первого раза. Нужно только заменить им фал дефолтного консольного проекта.



Да все понятно. Спорить с тобой бессмысленно, твой код просто эталон, а всех кто пытается дискутировать с тобой ты поливаешь грязью. Думаю, настоящий трах — это не писать на С++, а общаться с тобой.
Re[29]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.05 15:49
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Т.е. скомпилил и отладил в голове? Ну ты прям супер-компьютер А числа большие складывать в уме можешь быстро? Если серьезно, то я в этом сильно сомневаюсь, после того, как тебя поставило в замешательство отсутствие #include "stdafx.h" в начале исходника.


А ты не сомневайся. В тебе же никто не сомневается? Вот и ты уважай других.
Что касается "stdafx.h", то тебе как бы прозрачно намекали, что код нужно постить работоспособный. Чтобы другие не мучались. Пойми, что твой код просто никто не будет смотреть если он не скомпилируется с первого раза.

AG>Каша была в первом варианте, которую ты с радостью привел. Я нашел ошибку — ты собрал проект в unicode,


Так учись писать код так чтобы он не зависил от таких мелочей. Я собрал просто дефолтный проект ничего не переключая.

AG> и на std::cout << some_unicode_text выводилась не строка, а ее адрес в памяти или еще чего-то. Вообще-то визард консольного проекта по умолчанию настройку ставит на ansi,


Не нужно быть таким уверенным в себе. В VS 2005 визард по-умолчанию как раз создает юникодный проект. Что, кстати, логично. Ну, а то что std::cout не может нормально работать с юникодом — это опять же проблема этой библиотеки приводящая в конце коцов к тому самому траху о котором я говорю. Налепленные же тобой макросы _T() усугибили эту проблему.

AG> поэтому я не догадался специально включить unicode и проверить.


Писать нужно так чтобы догадываться не приходилось. Но тут я согласен, что основная вина лежит на реализации STL.

AG> А вот ты ее включил сам — наверно для того, чтобы сказать "ага! я нашел баг!" — это из той же оперы, когда с ты двух компов завалил базу оутлука и сказал, что он г####.


Мне не очень наравится твой тон и отношение. Дай договоримся, что ты все же будешь более уважительно относиться к собеседнику. ОК? По крайней мере все свои предположения на счет честности или подлости собеседника держи при себе. А если что просто переспроси.

VD>>Что значит не было? Ты оригинальный код читал? Там что сортировка от болды влеплена?


VD>>>> А все это добавит объема и при твоем методе кодирования ухудшит читаемость. Собственно код уже читается очень плохо в сравнении с эталонным.


AG>Не знаю зачем влеплена; скорее всего от балды. Надо было подсчитать повторы слов и все.


Что то ты изворачиваешся. Ну, да говорю тебе открытым текстом — сортировка была введена как раз чтобы можно было сравнить результаты теста. Результат твоего кода не только не отсортирован, но еще и отличается по количеству слов (еще бы ведь разбор слов попросту не сделан).

Короче, тесты не идентичены и сравнивать их нельзя. Но уже видно, что код получился очень грязным и плохо читаемым. Уверен, что будучи доведенным до полной аналогичности он будет еще хуже. Так что в качестве демонстрации он подходит уже сейчас.

AG>Ну я это и хотел сказать, что ты свой код назвал "образцовам, идеальным".


"Образец" не равно "образец для подрожания". Задача была создать аналогичный по функциональности код и сравнить время затраченное на его созадание, объем и читабельность получившегося кода.

VD>>>> В общем то об этом я и вел речь. Думаю когда ты добъешь свой код и сделашь его полностью аналогичным и работоспособным, то трах и неудобство ты сможешь оценить сам. О них я и говорил.


AG>Дело привычки.


Привыкнуть можно ко многму. Когда-то люди привыкали писать на ассемблере. Сейчас же, думаю, большинство сойдется во мнении, что это мазахистская привычка.

AG>Пришлю проект — надеюсь проблем не будет загрузить?


Ты лучше код допиши и приводи его в таком виде, чтобы его можно было просто копипэстом в пустой файл дефолтного консольного проекта засовывать.

AG>Да все понятно. Спорить с тобой бессмысленно, твой код просто эталон, а всех кто пытается дискутировать с тобой ты поливаешь грязью. Думаю, настоящий трах — это не писать на С++, а общаться с тобой.


Ну, ты на правильном пути. Воспринимай замечания как оскорбления и никогда не делай, что от тебя требуется. При этом во всем вени окружающих. Тогда всегда будешь прав.

ЗЫ

Грязь на тебя никто не выливал. Тебя просто попросили воспроисзвести тест. Ты же это не сделал и ищишь отмазки. Какова цель? Думаю, это вопрос риторический.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Про итераторы
От: Кодт Россия  
Дата: 31.08.05 16:05
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, ArtemGorikov, Вы писали:


AG>>Т.е. скомпилил и отладил в голове? Ну ты прям супер-компьютер А числа большие складывать в уме можешь быстро? Если серьезно, то я в этом сильно сомневаюсь, после того, как тебя поставило в замешательство отсутствие #include "stdafx.h" в начале исходника.


VD>А ты не сомневайся. В тебе же никто не сомневается? Вот и ты уважай других.

VD>Что касается "stdafx.h", то тебе как бы прозрачно намекали, что код нужно постить работоспособный. Чтобы другие не мучались. Пойми, что твой код просто никто не будет смотреть если он не скомпилируется с первого раза.

AG>>Каша была в первом варианте, которую ты с радостью привел. Я нашел ошибку — ты собрал проект в unicode,


VD>Так учись писать код так чтобы он не зависил от таких мелочей. Я собрал просто дефолтный проект ничего не переключая.


А если используется командная строка, то stdafx.h нафиг не нужен.
cl StringTest.cpp /GR /GX /D_UNICODE

Так что нападки чрезмерны.
Перекуём баги на фичи!
Re[31]: Про итераторы
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.05 16:10
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А если используется командная строка, то stdafx.h нафиг не нужен.

К>
К>cl StringTest.cpp /GR /GX /D_UNICODE
К>


Ну, в командную строку за такой фигней я точно не полезу.

К>Так что нападки чрезмерны.


В самый раз. Еще никому не вредило умение акуратно и корректно оформлять свой код и мысли.
... << RSDN@Home 1.2.0 alpha rev. 606>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.