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

unordered_multimap - интервальный конструктор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ «Массив структур» http://www.cyberforum.ru/cpp-beginners/thread917430.html
Написал программу на написание функции чтения в массив структур из файла. Данные «Пациент». Программа не работает, а именно при компиляции выбрасывает из программы, либо идёт её завершение. Не могу понять в чём дело. Помогите разобраться, пожалуйста. Код программы: #include<iostream> #include<fstream> using namespace std; int n=0; // счётчик для количества пациентов
C++ Помогите написать программу простого словаря Люди помогите, нужно сдать последнюю Лабу. Задача: Составить программу простейшего автоматизированного англо – немецко – русского словаря, данные словаря хранятся в файле. Программа должна выполнять следующие задачи: 1) Заполнение новых и вычеркивание ненужных слов в словаре. 2) По запросу пользователя словарем выдавать перевод слова с любого языка на два других 3) Производить поиск нужного... http://www.cyberforum.ru/cpp-beginners/thread917426.html
C++ Перевести код на c++
Всем привет! Столкнулся с такой проблемой... есть код на freebasic нужно его перевести на с++... Ну вот что-то никак не выходит... Я не знаком с бейсиком, ну да ладно бы это... но там какие-то ф-ции стандартные из него использованы и вот в них как раз и загвоздка... не могу понять что они делают... код ... Function CalcDist(x1 As Integer, x2 As Integer, y1 As Integer, y2 As Integer) As...
C++ Поясните ошибку, связанную с константой.
Делаю в VS 2012 #include "stdafx.h" #include <iostream> using namespace std; int main( int argc, char** argv ) { const int n=5;
C++ Разделение программы на несколько файлов http://www.cyberforum.ru/cpp-beginners/thread917395.html
Всем доброго времени суток! Возникла проблема - я написал небольшую програмку в main. #include <stdio.h> #include <stdlib.h> #include <conio.h> int main ()
C++ Библиотека классов, реализующих комплексную арифметику Могли бы помочь мне с заданием? Нужно создать приложение Windows c формами, которое использует созданную нами динамическую библиотеку для вычисления суммы, разности, произведения и частного двух комплексных чисел, введённых с клавиатуры. С созданием библиотек я пытался разобраться, но ничего не вышло, поэтому прошу у вас помощи. Конечное приложение будет выглядеть примерно так: Добавлено... подробнее

Показать сообщение отдельно
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
04.07.2013, 13:27     unordered_multimap - интервальный конструктор
Цитата Сообщение от DiffEreD Посмотреть сообщение
В принципе, работать будет если в std закинуть, но это плохой стиль программирования:
Почему перегрузить operator >> для своего типа является плохим стилем?
Или Вы имели в виду, что подключать свою функцию к другому пространству имен - плохой стиль? Тогда я согласен.

Вот вариант с помощью итераторов. Знаю, криво написано, но работает
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <unordered_map>
#include <iterator>
 
template <typename T, typename U, typename Func>
class istream_iterator_pair: public std::iterator<std::input_iterator_tag, T>
{
    std::istream_iterator<T> data;
    U prop;
    Func func;
public:
    istream_iterator_pair( std::istream_iterator<T> data_in, Func f ):
        data( data_in ), func( f )
    {
        prop = func(*data);
    }
 
    istream_iterator_pair(const istream_iterator_pair &x):
        istream_iterator_pair(x.data, x.func) {}
 
    istream_iterator_pair operator ++ ()
    {
        ++data;
        prop = func(*data);
        return *this;
    }
 
    istream_iterator_pair operator ++ (int)
    {
        istream_iterator_pair temp(*this);
        ++*this;
        return temp;
    }
 
    std::pair<std::string, size_t> operator * () { return {*data, prop}; }
 
    bool operator != (const istream_iterator_pair &x)
    {
        return data != x.data;
    }
};
 
int main(int argc, char** argv)
{
   std::string text = "constructs the container with the contents of the range";
   std::istringstream iss(text);
 
   auto func = [](const std::string &str){return str.size();};
   using input = std::istream_iterator<std::string>;
   using pair_in = istream_iterator_pair<std::string, size_t, decltype(func)>;
 
   std::unordered_multimap<std::string, size_t> words ( pair_in( input(iss), func ),
                                                    pair_in( input(), func ) );
   for (auto& i : words) std::cout<<std::setw(20)<<std::left<<i.first<<" : "<<i.second<<'\n';
 
   return 0;
}
 
Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru