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

Коварный map - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка линкера http://www.cyberforum.ru/cpp-beginners/thread627962.html
Здравствуйте!!! Подскажите пожалуйста почему возникают ошибки линкера? // main.cpp #include "parser.h" int main() { char prog_buff;
C++ Как правильно организовать большой проект? В будущем хочу участвовать в разработке игр - начал изучать С++, вопрос тут такой, как правильно организовать структуру достаточно большого проекта? в учебниках, с примерами в 1-2 файла все просто, но когда их становиться больше - я начинаю путатся. Например, пробую сделать примитивную 3Д модельку солнечной системы. есть некий базовый класс 3Д объекта, ответственный за перемещение и отрисовку... http://www.cyberforum.ru/cpp-beginners/thread627923.html
resize вектора векторов C++
Необходимо удалить n элементов с конца вектора. В vector::erase необходимо передавать итератор. Т.к. итератора у меня нет, а есть конкретная цифра сколько нужно удалить, вродебы подходит функция vector::resize. Вопросы: 1. Если в векторе содержатся вектора, при использовании erase и resize они будут корректно удалены? Или произойдет утечка памяти? 2. Корректно ли использовать resize в моем...
C++ Не врубаюсь в работу деструктора
Всем доброго времени суток. Не понимаю работу деструктора. Деструктор вроде как должен освобождать память от того что осталось после класса. Вот для примера код #include <iostream> using namespace std; class MyCl{ public: int mass; MyCl(); ~MyCl();
C++ Вычислить значение функции при разных аргументах, Visual C++ http://www.cyberforum.ru/cpp-beginners/thread627843.html
Всем привет! Нужно написать программку на вычисление функции, но незнаю с чего начать и чем закончить, только начал учить С++ :( Ребята, помогите, очень нужно. Условие: Написать программу на вычисление значения функции при разных значения аргументов, заданных интервалом смены и величины шага. Сам пример на картинке. Заранее всем огромное спасибо!
C++ Нужно написать программу интерполяции табличной функции кубическим сплайном Помогите написать программу интерполяции табличной функции кубическим сплайном. подробнее

Показать сообщение отдельно
dyosick
 Аватар для dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
24.07.2012, 13:31     Коварный map
Доброго всем дня, уважаемые форумчане!
Прошу прояснить следующий момент, почему при проходе по мапе теряется пара с ключом "4". Если флаг TExpiredNumberHandler стоит в true (на название класса прошу не обращать внимание):
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
#include <iostream>
#include <string>
#include <map>
#include <iterator>
#include <utility>
 
class TExpiredNumberHandler
{
public:
    TExpiredNumberHandler(bool check = true) : check_on_owner_expiration(check) {};
 
    bool process(const int number) {
        if (number > 0) {
            if (!check_on_owner_expiration || (number < 10)) {
                return true;
            }
        }
        return false;
    }
    void setCheck(bool check) { check_on_owner_expiration = check; }
private:
    bool check_on_owner_expiration;
};
 
int main()
{
    TExpiredNumberHandler cb(true);
 
    std::map<int, std::string> test_map;
    test_map.insert(std::pair<int, std::string>(-9, "first"));
    test_map.insert(std::pair<int, std::string>(2, "second"));
    test_map.insert(std::pair<int, std::string>(28, "third"));
    test_map.insert(std::pair<int, std::string>(4, "fourth"));
    test_map.insert(std::pair<int, std::string>(36, "fifth"));
 
    for (std::map<int, std::string>::iterator it = test_map.begin(); it != test_map.end(); ++it) {
        std::cout << "\nProcess '" << (*it).first << "' Map size = " << test_map.size() << std::endl;
        if (cb.process((*it).first)) {
            std::cout << "Deleting..." << std::endl;
            test_map.erase(it);
        } else {
            std::cout << "Ignore..." << std::endl;
        }
    }
 
    std::cout << "Map size = " << test_map.size() << std::endl;
    std::cout << "End" << std::endl;
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru