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

STL Iterators - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод из кодировки UTF - 8 в ANSI http://www.cyberforum.ru/cpp-beginners/thread634420.html
Всем привет! Пишу прогу на линухе, результаты работы вывожу в html файл. Так вот когда открываю файл для прочтения с помощью браузера там иероглифы, с помощью текстового редактора в linux то все ок. Я так понял что браузер не нравиться кодировка, конечно можно в настройках браузера изменить, но мне нужно что бы такой заморочки не было. Подскажите как мне изменить кодировку?
C++ Книги для использования оконных приложений Всем привет. Консольные приложение это хорошо, но я уже прочитал книгу, и более менее знаю азы c++. Но хотелось бы создавать уже нормальные, красивые приложения с использованием Windows Forms Application. Хочу попросить чтобы мне посоветовали литературу или сайт где есть уроки поповоду использования WFA. http://www.cyberforum.ru/cpp-beginners/thread634416.html
C++ Разыменования указателя
Добрий день подскажите пожалуйса можно ли разыменовать такое вот виражения pt->str char*pt-указатель str объект класса _bstr_t нужно получить данные которые находятся в str если сделать вот так cout<< pt->str; то я данные вижу а если вот так SetDlgItemText(IDC_EDIT1,pt->str); то в окно EDIT1 ничего не выводит может его можно разыменовать?
C++ Засада с машинным эпсилон, или Либо я дурак
Эту задачку выполняют все начинающие. Так вот, берём два простеньких кода. Они настолько коротки, тупы и очевидны, что я даже не комментировал их. Первый, работает нормально. #include <iostream> using std::cout; using std::endl;
C++ Тема: Записи. Работа с текстовыми файлами http://www.cyberforum.ru/cpp-beginners/thread634393.html
Тема: Записи. Работа с текстовыми файлами. Дан файл f, содержащий сведения о багаже нескольких пассажиров. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно - действительное (вес в килограммах). Найти число пассажиров, имеющих более двух вещей и число...
C++ Отобразить вектор в обратном порядке не используя реверсивные итераторы Отобразить вектор в обратном порядке не используя реверсивные итераторы никак не могу в цикле вывести последний(самый первый) элемент подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
09.08.2012, 20:29     STL Iterators
Цитата Сообщение от Leeto Посмотреть сообщение
для map не работает
Естественно, потому что итератор по map по 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
 
#include <vector>
#include <list>
#include <map>
 
template <typename Iterator>
double
Sum( Iterator first, Iterator last )
{
    double ret = 0.0;
 
    while( first != last )
        ret += *first++;
 
    return ret;
}
 
template <class T1, class T2>
class MapAdapter {
  typename std::map<T1, T2>::iterator iterator;
public:
  MapAdapter(const typename std::map<T1, T2>::iterator &iterator_):
    iterator(iterator_) {}
 
  MapAdapter<T1, T2>& operator++()
  {
    iterator++;
    return this;
  }
 
  MapAdapter<T1, T2> operator++(int bork)
  {
    return MapAdapter<T1, T2>(++iterator);
  }
 
  T2 operator*()
  {
    return (*iterator).second;
  }
 
  bool operator==(const MapAdapter<T1, T2> &other)
  {
    return this->iterator == other.iterator;
  }
 
  bool operator==(const typename std::map<T1, T2>::iterator &other)
  {
    return this->iterator == other;
  }
 
  bool operator!=(const MapAdapter<T1, T2> &other)
  {
    return !MapAdapter<T1, T2>::operator==(other);
  }
 
  bool operator!=(const typename std::map<T1, T2>::iterator &other)
  {
    return !MapAdapter<T1, T2>::operator==(other);
  }
};
 
int
main()
{
    // typedef std::vector< double > double_container_t;
    // typedef std::list< double > double_container_t;
    typedef std::map< double,double > double_container_t;
 
     double_container_t MyContainer;
            for (int i=0;i<10;i++) 
                {
                    MyContainer[i] = i*10; 
                }
 
    std::cout << "sum = " << Sum(MapAdapter<double, double>(MyContainer.begin()), MapAdapter<double, double>(MyContainer.end())) << '\n';
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru