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

Библиотека STL, + задача с её использованием - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С чем лучше начинать: с IDE или с командной строкой? http://www.cyberforum.ru/cpp-beginners/thread645067.html
Изучать язык только начал и сразу же столкнулся с несоответствием примеров в книгах с реально написанным кодом. Когда-то мне в руки попался диск с 6-м Борландом, там видел что изначально есть определенный стартовый набор необходимого кода, я так думаю с поддержкой библиотек у них тоже проблем будет поменее, да и собирать его можно как лего, но... Хочу изучить с++ довольно глубоко и основательно....
C++ Тест с регинальными задачами по C++ Попробуй решить тест http://www.cyberforum.ru/cpp-beginners/thread645058.html
C++ Как узнать разрешение монитора?
Желательно кроссплатформенный метод. Заранее благодарен.
Синтаксис файла ресурсов C++
Мне необходимо в экзешник запихънуть кучку tga изображений. Как это сделать? Какие директивы использовать? Перекодировка изображения неприемлима. И еще одно: где можно почитать о синтаксисе файлов ресурса?
C++ Инициализация объектов класса в конструкторе другого класса http://www.cyberforum.ru/cpp-beginners/thread644990.html
У меня есть класс Subscriber,в котором есть несколько объектов другого класса Date,мне нужно,чтобы при создании Subscriber объекты класса Date инициализировались значениями по умолчанию. Чтобы так и было,мне нужно в конструкторе класса Subscriber написать в списке инициализаторов имена объектов с пустым списком параметров или просто их не трогать,считая,что при создании объекта они...
C++ Значение переменных Для Х, принимающего значения от XN до XK с шагом ∆X, определить Y. При условии: Значения всех переменных определить по таблице 1. Результат выдать в форме таблицы значений X иY. Для таблицы обеспечить подпись столбцов. подробнее

Показать сообщение отдельно
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
01.09.2012, 22:13  [ТС]     Библиотека STL, + задача с её использованием
Цитата Сообщение от I.M. Посмотреть сообщение
или нужно, чтобы матрица всегда оставалась прямоугольной?
Я уже завтра посмотрю на этот вариант, попробую присандалить.

Цитата Сообщение от alsav22 Посмотреть сообщение
В чём конкретно? Если просто: что такое STL и как с ней работать, то обращайтесь к литературе.
Разобраться в поведении сущностей этой библиотеки, и понимать каждую из них как тип данных инт, или указатель и тд, также пользоватся.
Чтоб выучить любой язык программирования нужно писать на нем программы, я не знаю другого пути. Есть вещи которые не получается выучить по литературе, но я без условно к ней обращаюсь. Все и сразу выучить не могу, но по мере скромных сил стараюсь...

Буду отписывается об успехах с этой задачей в этой теме.

novi4ok, Ссылка интересная, запомнил буду листать.

Мне хочется верить, что я напишу ещё не один пример с использованием STL, и не важно удачный он или не удачный.... Пока есть этот.

Добавлено через 20 часов 43 минуты
Продолжу с этим примером:
Приведенный ниже код уже компилируется,
проблема 1) оно осуществляет вывод матрицы, отмечает цветом выделенный элемент и перемещает цветовой маркер только вправо, как мне доработать(исправить) код чтоб маркер перемещался по всему размеру матрицы?(верх, вниз, право, лево).


SudokuItem.h
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
#include "stdafx.h"
#pragma once
typedef void (*Action)(void);
class SudokuItem
{
    int *value;
    Action action;
 
public:
 
    SudokuItem(){ this->value=new int;}
    SudokuItem(int value , Action act): action(act)
    {
        this->value=new int; *this->value=value;
    }
 
    int & getValue(){
        return *value;
    }
 
    void operator ()(){
        action();
    }
 
/*  ~SudokuItem(void)
    {
    }
    */
};
SudokuPole.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
#include "SudokuItem.h"
class SudokuPole
{
    HANDLE console;
    vector < vector<SudokuItem> > Matrix;
public:
//  void add();
        void add(int x, int y,int * num, Action action);
    void operator ()();
    
 
    void drow(vector<SudokuItem>::iterator);
    SudokuPole(void);
    ~SudokuPole(void);
};
SudokuPole.cpp
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "SudokuPole.h"
 
SudokuPole::SudokuPole(void)
{
    console=GetStdHandle(STD_OUTPUT_HANDLE);
}
    void SudokuPole::drow(vector<SudokuItem>::iterator selected){
    system ("cls");
    int s=0;
        vector< vector<SudokuItem> >::iterator it=this-> Matrix.begin();
 
        do
        {
        vector<SudokuItem> ::iterator itin=it->begin();
            do {
 
                if (itin._Ptr==selected._Ptr){
            SetConsoleTextAttribute(console, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
 
            }
        else
    
            SetConsoleTextAttribute(console, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
            cout<<itin->getValue();
        itin++;
}
        while(itin!=it->end());
        cout<<endl;
        it++;
        }while(it!=Matrix.end());
}
/*void SudokuPole::add(){
 
        }*/
 
void SudokuPole::add(int x, int y,int * num, Action action){
        if(x < 0 || y < 0)return;
 
    if(Matrix.size() <= x)Matrix.resize(x+1);
    if(Matrix[x].size() <=  y)Matrix[x].resize(y+1);
    SudokuItem tmp(*num,action);
    Matrix[x][y] =tmp;    
    return;
        }
 
void SudokuPole::operator()()
{
    vector< vector<SudokuItem> >::iterator& it=this->Matrix.begin();
    vector<SudokuItem>::iterator& itin=this->Matrix.begin()->begin();
 
    while(true)
    {
        drow(itin);
        int code=getch();
        switch(code)
        {
        case 27:
            return;
        case 13:
            system ("cls");
    //      it->getAction()();
            itin->operator()();
            system("pause");
            break;
        case 75:
            if(it!=this->Matrix.begin())
            it--;
            break;
        case 77:
            {
            vector<SudokuItem>::iterator
                tmp(itin);
            tmp++;
            if(tmp!=it->end())
                itin++;
            }
            break;
        case 72:
            if(it!=Matrix.begin())
            it--;
            break;
        case 80:
            {
            vector< vector<SudokuItem> >::iterator
                tmp(it);
            tmp++;
            if(tmp!=Matrix.end())
                it++;
            break;
            }
 
        }
    }
}
 
SudokuPole::~SudokuPole(void)
{
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include"SudokuPole.h"
void f(){
    cout<<"\nAction\n";
}
 
void main(){
    int d=0;
    SudokuPole pole;
    for (int i=0;i<10;i++)
        for(int j=0;j<10;j++){
            pole.add(i,j,&d,f);
        }
    pole();
}
 
Текущее время: 07:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru