Форум программистов, компьютерный форум CyberForum.ru

Странное поведение map в объкт-функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ посчитать количество слов или отдельных символов в предложении http://www.cyberforum.ru/cpp-beginners/thread401513.html
дан текст ,нужно вывести количество слов . Примечание: слово представляет собой последовательность символов, разделенных пробелами !!! пример : ввод I live in Almaty . Almaty is my hometown . I love my hometown . вывод : . 3 Almaty 2 I 2 ...
C++ Найти площадь 5-угольника, заданного координатами вершин вершины пятиугольника задано своими координатами М1(0;0), M2(1,2), M3(3,2), M4(5,0), M5(4,-2). Вычислить площадь пятиугольника ,воспользовавшись при этом формулой Герона ,где р=(a+b+c)/2;a,b,c- длины сторон.с++ http://www.cyberforum.ru/cpp-beginners/thread401512.html
C++ Временная оценка алгоритма
Уважаемые форумчане, помогите сделать временную оценку выполнения рекурсивных алгоритмов (или хотя бы одного). Мне не нужна программная реализация этого, а именно теоретические вычисления вручную. Желательно с п объяснениями. Буду очень благодарен. int fac(int n) { if (n==0) return 1; n=n*fac(n-1); return n; } size_t fib(size_t n)
при использовании класса CFileDialog выдает ошибку на Visual Studio 2010 C++
листинг кнопки "сгенерировать файл": void CinterfaceDlg::OnBnClickedGenf() {char Filter ="TextFile(*.txt),(*.doc)|*.txt;*.doc|All (*.*)|*.*||"; CFileDialog fd(TRUE,".txt","ReadMe",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, Filter); fd.DoModal(); FILE* file=NULL; file=fopen("koordinaty.txt\0","w"); if(file==NULL) {MessageBox("error!");
C++ найти огромное Р http://www.cyberforum.ru/cpp-beginners/thread401494.html
, где a=6,4; b-1,45; p=4,03; q=2,55; di,ci-де ите,це ите ci=i*0,5/3; di=(i-0,9)/4; 1<=i<=15.с++
C++ Преобразование тензора сделать такое преобразование тензора ,при котором последний столбец занимает место первого,а все остальные сместятся на один столбец вправо.с++ подробнее

Показать сообщение отдельно
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 268
07.12.2011, 21:11     Странное поведение map в объкт-функции
есть класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class writer
{
    map <string, list<string> > &dat;
    list<string> &all;
 
    bool flag; //true = familiya
    
public:
    writer( map <string, list<string> > &dat_, list<string> &all_): dat(dat_), all(all_)
    {
        flag = true;
    }
 
    void operator () (string s)
    {
        string Fam;
        if(flag)
        {
            Fam = s;
            list<string> :: iterator pb = all.begin();
            list<string> :: iterator pe = all.end();
            if (find(pb, pe, Fam) == pe)
            {
                all.push_back(Fam);
            }
            flag = !flag;
        }
        else
        {
            dat[s].push_back(Fam);
            flag = !flag;
        }
 
    }
};
вызов осуществляется так
C++
1
2
3
4
5
6
7
ifstream FS;
        FS.open(s);
map <string, list<string> > data;
list<string> all_stud;
 
 
        for_each(istream_iterator<string>(FS), istream_iterator<string>(), writer(data, all_stud));
вся проблема в том, что после вызова контейнер all_stud ЗАПОЛНЕН, а data заполнен, но не выводится!
щас поясню:
цикл
C++
1
2
3
4
5
6
7
8
for(auto it = data.begin(); it!= data.end(); ++it)
                 {
                     for(auto it1 = it->second.begin(); it1 != it->second.end(); ++it1)
                     {
                         cout<<' '<<*it1<<' ';
                     }
                     cout<<"987"<<'\n';
                 }
работает. Комбинация 987 выводится столько же раз, сколько элементов должно существовать. и Кол-во пробелов - тоже соответствует кол-ву элементов. А вот вызов
C++
1
*it1
не выводит НИЧЕГО! Я работаю с русским текстом. Проблем до этого момента не было. Переход на английский ничего не даёт, да и в списке all_stud всё выводится корректно...что такое?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru