Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508

Error C2338: The C++ Standard doesn't provide a hash for this type

09.09.2016, 02:02. Показов 5937. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хеш таблицы в руках впервые, необходима неупорядоченность.
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
#include <iostream>
#include <conio.h>
#include <string>
#include <unordered_map>
#include <vector>
#include <fstream>
#include "MyLib.h"
 
using std::cin;
using std::cout;
using std::endl;
using std::unordered_multimap;
 
unsigned char bitextract(const unsigned int byte, const unsigned int mask);
 
int main()
{
    MyLanguage("Rus");
 
    std::vector<unsigned int> theRGB;
    unordered_multimap<std::vector<unsigned int>, std::string> theMap;
 
    theRGB.push_back(0);
    theRGB.push_back(0);
    theRGB.push_back(0);
    unsigned int str;
    unsigned char enter;
    unsigned char space = ' ';
    std::string buff;
 
    std::string result;
 
    std::ifstream input("Color.txt", std::ios::binary);
    if (!input)
    {
        std::cerr << "Error >>> " << "Color.txt" << endl;
    }
 
    for (int i = 0; i < 8; ++i)
    {
        enter = ' ';
        while (enter != '\n') {
            input.read(reinterpret_cast<char *>(&str), 1);
            enter = bitextract(str, 255);
            result.push_back(enter);
 
            if (enter == space)
            {
                for (int j = 0; j < 3; ++j)
                {
                    {
 
                        do {
                            input.read(reinterpret_cast<char *>(&str), 1);
                            enter = bitextract(str, 255);
 
                            if (enter == space || enter == '\n')
                                break;
 
                            buff.push_back(enter);
                        } while (enter != space && enter != '\n');
 
                        theRGB[j] = atoi(buff.c_str());
                        buff.clear();
                    }
                }
                theMap.insert(std::pair<std::vector<unsigned int>, std::string>(theRGB, result));
                result.clear();
            }
        }
    }
    
    int cOunt = 0;
    for (auto iter = theMap.begin(); iter != theMap.end(); ++iter)
    {
        ++cOunt;
        cout << cOunt << ". " << iter->first[0] << ' ' << iter->first[1] << ' ' << iter->first[2] << ' ' << iter->second << endl;
    }
    
    _getch();
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2016, 02:02
Ответы с готовыми решениями:

C++ Standard doesn't provide a hash for this type с unordered_map и реализацией мультиметода
Реализую мультиметоды с использованием RTTI и получаю ошибку об отсутствии поддержки хеша для чего-то. VS не выделяет конкретную строку,...

Hash_Map Error (C2338)
1) Ребята, начинал учить C++ и как всегда и как у всех, не без проблем. Пробовал писать в DevC++, все хорошо, но потом понял, что рано или...

Editor doesn't contain a main type
Самая первая программа на java и коту под хвост . я написал &quot;Hello world!&quot; и получил в ответ вот такое ругательство : Selection does not...

45
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 17:48
Студворк — интернет-сервис помощи студентам
MuslimPalit, давай выкладывай что получилось
Я когда код этот проверял, то сравнивал файлы, которые генерит твой код и мой, и они совпали с точностью до байта.
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 19:36  [ТС]
DrOffset, вот сейчас не понял тебя. Я внес изменения которые ты говорил в программу которая считывает цвета картинки и выводит в файл. Она у меня выводит не все в файл, хотя вычисления в цикле выполняются полностью

Добавлено через 6 минут
DrOffset, говоря коротко и точнее, в программе считывает с картинки все биты и выполняет цикл 241200 раз, а в нем еще вывод в файл, который выполняется по разному, но каждый раз - вот после последнего запуска программы открыл файл, а там 241102 строки и v-значение не отписалось даже в последней строке. Я не понял почему он так себя ведет, связано с памятью? Преобразованиями или еще чего?
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 19:46  [ТС]
Вот последняя загрузка программы? Ну как так?
Миниатюры
Error C2338: The C++ Standard doesn't provide a hash for this type  
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 19:50
Цитата Сообщение от MuslimPalit Посмотреть сообщение
Я внес изменения которые ты говорил
Вот я и хочу посмотреть, как ты их внес.

Цитата Сообщение от MuslimPalit Посмотреть сообщение
Я не понял почему он так себя ведет, связано с памятью? Преобразованиями или еще чего?
Пока я не воспроизведу это у себя, мне тоже ничего не понятно
Поэтому я и прошу у тебя код актуальный, и картинку прикрепи оригинальную (bmp в архие zip).
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 19:57  [ТС]
DrOffset, окей

Добавлено через 4 минуты
Исходник, ниже входной/выходной файлы
Кликните здесь для просмотра всего текста
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
#include <iostream>
#include <conio.h>
#include <stdint.h>
#include <assert.h>
#include <vector>
#include <fstream>
 
#include "main.h"
 
void RGB2HSV(unsigned int&, unsigned char&, unsigned char&, unsigned char, unsigned char, unsigned char);
 
int main(int argc, char *argv[])
{
    if (argc < 2) {
        std::cout << "Usage: " << argv[0] << " file_name" << std::endl;
        return 0;
    }
    char *fileName = argv[1];
    char *wFile = "bbff.txt";
 
    // открываем файл
    std::ifstream fileStream(fileName, std::ifstream::binary);
    if (!fileStream) {
        std::cout << "Error opening file '" << fileName << "'." << std::endl;
        return 0;
    }
 
    // открываем файл 
    std::ofstream fcout(wFile);
    if (!fcout) {
        std::cout << "Error opening file '" << wFile << "'." << std::endl;
        return 0;
    }
 
    // заголовк изображения
    BITMAPFILEHEADER fileHeader;
 
    read(fileStream, fileHeader.bfType, sizeof(fileHeader.bfType));
    read(fileStream, fileHeader.bfSize, sizeof(fileHeader.bfSize));
    read(fileStream, fileHeader.bfReserved1, sizeof(fileHeader.bfReserved1));
    read(fileStream, fileHeader.bfReserved2, sizeof(fileHeader.bfReserved2));
    read(fileStream, fileHeader.bfOffBits, sizeof(fileHeader.bfOffBits));
 
    if (fileHeader.bfType != 0x4D42) {
        std::cout << "Error: '" << fileName << "' is not BMP file." << std::endl;
        return 0;
    }
 
    // информация изображения
    BITMAPINFOHEADER fileInfoHeader;
    read(fileStream, fileInfoHeader.biSize, sizeof(fileInfoHeader.biSize));
 
    // bmp core
    if (fileInfoHeader.biSize >= 12) {
        read(fileStream, fileInfoHeader.biWidth, sizeof(fileInfoHeader.biWidth));
        read(fileStream, fileInfoHeader.biHeight, sizeof(fileInfoHeader.biHeight));
        read(fileStream, fileInfoHeader.biPlanes, sizeof(fileInfoHeader.biPlanes));
        read(fileStream, fileInfoHeader.biBitCount, sizeof(fileInfoHeader.biBitCount));
    }
 
    // получаем информацию о битности
    int colorsCount = fileInfoHeader.biBitCount >> 3;
 
    if (colorsCount < 3) {
        colorsCount = 3;
    }
    int bitsOnColor = fileInfoHeader.biBitCount / colorsCount;
    int maskValue = (1 << bitsOnColor) - 1;
    
    // bmp v1
    if (fileInfoHeader.biSize >= 40) {
        read(fileStream, fileInfoHeader.biCompression, sizeof(fileInfoHeader.biCompression));
        read(fileStream, fileInfoHeader.biSizeImage, sizeof(fileInfoHeader.biSizeImage));
        read(fileStream, fileInfoHeader.biXPelsPerMeter, sizeof(fileInfoHeader.biXPelsPerMeter));
        read(fileStream, fileInfoHeader.biYPelsPerMeter, sizeof(fileInfoHeader.biYPelsPerMeter));
        read(fileStream, fileInfoHeader.biClrUsed, sizeof(fileInfoHeader.biClrUsed));
        read(fileStream, fileInfoHeader.biClrImportant, sizeof(fileInfoHeader.biClrImportant));
    }
 
    // bmp v2
    fileInfoHeader.biRedMask = 0;
    fileInfoHeader.biGreenMask = 0;
    fileInfoHeader.biBlueMask = 0;
 
    if (fileInfoHeader.biSize >= 52) {
        read(fileStream, fileInfoHeader.biRedMask, sizeof(fileInfoHeader.biRedMask));
        read(fileStream, fileInfoHeader.biGreenMask, sizeof(fileInfoHeader.biGreenMask));
        read(fileStream, fileInfoHeader.biBlueMask, sizeof(fileInfoHeader.biBlueMask));
    }
 
    // если маска не задана, то ставим маску по умолчанию
    if (fileInfoHeader.biRedMask == 0 || fileInfoHeader.biGreenMask == 0 || fileInfoHeader.biBlueMask == 0) {
        fileInfoHeader.biRedMask = maskValue << (bitsOnColor * 2);
        fileInfoHeader.biGreenMask = maskValue << bitsOnColor;
        fileInfoHeader.biBlueMask = maskValue;
    }
 
    // bmp v3
    if (fileInfoHeader.biSize >= 56) {
        read(fileStream, fileInfoHeader.biAlphaMask, sizeof(fileInfoHeader.biAlphaMask));
    }
    else {
        fileInfoHeader.biAlphaMask = maskValue << (bitsOnColor * 3);
    }
 
    // bmp v4
    if (fileInfoHeader.biSize >= 108) {
        read(fileStream, fileInfoHeader.biCSType, sizeof(fileInfoHeader.biCSType));
        read(fileStream, fileInfoHeader.biEndpoints, sizeof(fileInfoHeader.biEndpoints));
        read(fileStream, fileInfoHeader.biGammaRed, sizeof(fileInfoHeader.biGammaRed));
        read(fileStream, fileInfoHeader.biGammaGreen, sizeof(fileInfoHeader.biGammaGreen));
        read(fileStream, fileInfoHeader.biGammaBlue, sizeof(fileInfoHeader.biGammaBlue));
    }
 
    // bmp v5
    if (fileInfoHeader.biSize >= 124) {
        read(fileStream, fileInfoHeader.biIntent, sizeof(fileInfoHeader.biIntent));
        read(fileStream, fileInfoHeader.biProfileData, sizeof(fileInfoHeader.biProfileData));
        read(fileStream, fileInfoHeader.biProfileSize, sizeof(fileInfoHeader.biProfileSize));
        read(fileStream, fileInfoHeader.biReserved, sizeof(fileInfoHeader.biReserved));
    }
 
    // проверка на поддерку этой версии формата
    if (fileInfoHeader.biSize != 12 && fileInfoHeader.biSize != 40 && fileInfoHeader.biSize != 52 &&
        fileInfoHeader.biSize != 56 && fileInfoHeader.biSize != 108 && fileInfoHeader.biSize != 124) {
        std::cout << "Error: Unsupported BMP format." << std::endl;
        return 0;
    }
 
    if (fileInfoHeader.biBitCount != 16 && fileInfoHeader.biBitCount != 24 && fileInfoHeader.biBitCount != 32) {
        std::cout << "Error: Unsupported BMP bit count." << std::endl;
        return 0;
    }
 
    if (fileInfoHeader.biCompression != 0 && fileInfoHeader.biCompression != 3) {
        std::cout << "Error: Unsupported BMP compression." << std::endl;
        return 0;
    }
 
    size_t bytes = (fileInfoHeader.biBitCount / 8);
    size_t linePadding = ((fileInfoHeader.biWidth * bytes) % 4) & 3;
 
    fcout << " R"
        << "  G"
        << "  B        "
        << "  H"
        << "  S"
        << "  V" << '\n';
 
    assert(bytes <= sizeof(uint32_t));
    std::vector<char> line(fileInfoHeader.biWidth * bytes + linePadding);
    for (size_t i = 0; i < fileInfoHeader.biHeight; ++i)
    {
        if (fileStream.read(&line[0], line.size()))
        {
            for (size_t j = 0; j < (fileInfoHeader.biWidth * bytes); j += bytes)
            {
                uint32_t num = 0;
                std::memcpy(&num, &line[j], bytes);
 
                uint8_t r = bitextract(num, fileInfoHeader.biRedMask);
                uint8_t g = bitextract(num, fileInfoHeader.biGreenMask);
                uint8_t b = bitextract(num, fileInfoHeader.biBlueMask);
                uint8_t a = bitextract(num, fileInfoHeader.biAlphaMask);
 
                uint8_t  sat, val;
                uint32_t hue;
                RGB2HSV(hue, sat, val, r, g, b);
 
                fcout << std::hex
                    << +r << " "
                    << +g << " "
                    << +b << "        "
                    << std::dec
                    << +hue << " "
                    << +sat << " "
                    << +val << "        "
                    << '\n';
            }
        }
    }
    _getch();
    return 0;
}
 
unsigned char bitextract(const unsigned int byte, const unsigned int mask) {
    if (mask == 0) {
        return 0;
    }
 
    // определение количества нулевых бит справа от маски
    int
        maskBufer = mask,
        maskPadding = 0;
 
    while (!(maskBufer & 1)) {
        maskBufer >>= 1;
        maskPadding++;
    }
    // применение маски и смещение
    return (byte & mask) >> maskPadding;
}
 
// для перевода цвета из RGB в HSV воспользуйтесь следующим кодом
void RGB2HSV(unsigned int &hue, unsigned char &sat, unsigned char &val, unsigned char r, unsigned char g, unsigned char b) {
    double h, rc, gc, bc, dmax;
    unsigned char s, v;
    unsigned char minc, maxc;
    
    maxc = (r > g) ? ((r > b) ? r : b) : ((g > b) ? g : b);
    minc = (r < g) ? ((r < b) ? r : b) : ((g < b) ? g : b);
    s = 0; // Насыщенность
 
    if (maxc) {
        s = (maxc - minc) * 255 / maxc;
    }
    sat = 100 * s / 255;
    val = 100 * maxc / 255;
 
    if (!s) { // Ахроматический цвет
        hue = 0;
    }
    else { // Хроматический цвет
        dmax = maxc - minc;
        rc = (maxc - r) / dmax; /* rc - удаленность */
        gc = (maxc - g) / dmax; /* цвета от красного */
        bc = (maxc - b) / dmax;
 
        if (r == maxc) { // Цвет между желтым и пурпурным
            h = bc - gc;
        }
        else if (g == maxc) { // Цвет между голубым и желтым
            h = 2 + rc - bc;
        }
        else { // Цвет между пурпурным и голубым
            h = 4 + gc - rc;
        }
        h *= 60.0;
        if (h < 0.0) {
            h += 360.0;
        }
        hue = h;
        if (hue == 360) {
            hue = 0;
        }
    } // if (!s)
} // RGB 2 HSV

Входное изображение
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 19:59  [ТС]
изображение
Вложения
Тип файла: rar bmpInput.rar (1.38 Мб, 2 просмотров)
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 20:04  [ТС]
DrOffset, я еще раз проверил, дело наверное в блокноте
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 20:14
Цитата Сообщение от MuslimPalit Посмотреть сообщение
считывает с картинки все биты и выполняет цикл 241200 раз, а в нем еще вывод в файл, который выполняется по разному, но каждый раз - вот после последнего запуска программы открыл файл, а там 241102
Ну вроде все верно, так и должно быть.
Первая строка у тебя добавилась в самом начале, это заголовок R G B H S V, он вставился перед циклом. Последняя строка, пустая, образовалась из-за переноса строки на последней итерации цикла.

Добавлено через 1 минуту
В файле 241202 строки. Из них 241200 - данные, остальное - это заголовок и последняя пустая строка.

Добавлено через 1 минуту
Еще хочу сказать, что в функции RGB2HSV есть баг, связанный с отсечением плавающей точки (значение hue). Из-за этого, у меня например, на release и debug конфигурациях получаются разные результаты. Хорошо бы его тоже поправить.
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 20:19  [ТС]
DrOffset, да спасибо все верно и вправду что-то не то с блокнотом.

Добавлено через 3 минуты
DrOffset, Баги? Это плохо! Я смотрю изменения которые ты внес и не понимаю откуда берут начало такие решения
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 20:22
Цитата Сообщение от MuslimPalit Посмотреть сообщение
Я смотрю изменения которые ты внес и не понимаю откуда берут начало такие решения
В смысле?

Цитата Сообщение от MuslimPalit Посмотреть сообщение
Баги? Это плохо!
Баг внес не я, он был там изначально. Вот отметил где это
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
// для перевода цвета из RGB в HSV воспользуйтесь следующим кодом
void RGB2HSV(unsigned int &hue, unsigned char &sat, unsigned char &val, unsigned char r, unsigned char g, unsigned char b) {
    double h, rc, gc, bc, dmax;
    unsigned char s, v;
    unsigned char minc, maxc;
    
    maxc = (r > g) ? ((r > b) ? r : b) : ((g > b) ? g : b);
    minc = (r < g) ? ((r < b) ? r : b) : ((g < b) ? g : b);
    s = 0; // Насыщенность
 
    if (maxc) {
        s = (maxc - minc) * 255 / maxc;
    }
    sat = 100 * s / 255;
    val = 100 * maxc / 255;
 
    if (!s) { // Ахроматический цвет
        hue = 0;
    }
    else { // Хроматический цвет
        dmax = maxc - minc;
        rc = (maxc - r) / dmax; /* rc - удаленность */
        gc = (maxc - g) / dmax; /* цвета от красного */
        bc = (maxc - b) / dmax;
 
        if (r == maxc) {  // здесь!!! Цвет между желтым и пурпурным
            h = bc - gc;
        }
        else if (g == maxc) { // здесь!!! Цвет между голубым и желтым
            h = 2 + rc - bc;
        }
        else { // Цвет между пурпурным и голубым
            h = 4 + gc - rc;
        }
        h *= 60.0;
        if (h < 0.0) {
            h += 360.0;
        }
        hue = h; // здесь!!!
        if (hue == 360) {
            hue = 0;
        }
    } // if (!s)
} // RGB 2 HSV
Возможно положение спасли бы округление (например std::round) и сравнение с заданной точностью, но я не уверен в корректности такого приема.
Может быть втупую округлять нельзя и есть какие-то механизмы минимизации ошибки относительно сути алгоритма, но мне в данном случае они неизвестны.
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 20:26  [ТС]
DrOffset, связанные с битовыми операциями. Я понимаю, как работаю операции но не понимаю как их реализовывать, даже не понимаю для чего их реализовываешь ты, особенно путаница пошла когда ты ввел uint32_t, uint8_t
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 20:33
Цитата Сообщение от MuslimPalit Посмотреть сообщение
особенно путаница пошла когда ты ввел uint32_t, uint8_t
Это же наоборот должно вносить ясность
Ведь если ты используешь платформозависимый тип (такой как int) в таких завязанных на количество байт вещах, то рискуешь получить нерабочую программу, например при переносе на другую разрядность. А так сразу ясно, тип 32битный и всегда будет таким, если компилятор поддерживает. А если не поддерживает, то код просто не соберется.
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 21:10  [ТС]
DrOffset, а почему так?
C++
1
2
3
4
5
6
7
8
9
struct sRGB
{
    uint32_t r, g, b;
};
 
uint32_t toRGB(sRGB const & x)
{
    return (x.r << 16) | (x.g << 8) | x.b;
}
почему смещаем на столько? С чем это связано?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
13.09.2016, 21:36
Лучший ответ Сообщение было отмечено MuslimPalit как решение

Решение

C++
1
2
3
4
5
6
7
8
9
struct sRGB
{
    uint32_t r, g, b;
};
 
uint32_t toRGB(sRGB const & x)
{
    return (x.r << 16) | (x.g << 8) | x.b;
}
Например:
Code
1
2
3
x.r = 00000000, 00000000, 00000000, 00000001 (1)
x.g = 00000000, 00000000, 00000000, 00000010 (2)
x.b = 00000000, 00000000, 00000000, 00000011 (3)
В десятичном виде это числа 1, 2 и 3.
Нам надо представить эти три числа в виде одного, упакованного. Условимся, что числа не более 255 (unsigned char).
Сдвиг r на 16 даст нам следующее число:
Code
1
2
00000000,00000001,00000000,00000000
                  |      16       |
Сдвиг g на 8 даст:
Code
1
2
00000000,00000000,00000010,00000000
                           |   8  |
b мы не сдвигаем, т.е. остается:
Code
1
00000000,00000000,00000000,00000011
Теперь объединим эти три числа операцией побитового ИЛИ. Таблица истинности для ИЛИ выглядит так:
Code
1
2
3
4
0  |  0  = 0
0  |  1  = 1
1  |  1  = 1
1  |  0  = 1
Я думаю теперь тебе несложно будет посчитать что получится:
Code
1
2
00000000,00000001,00000010,00000011
         |   1  | |   2  | |   3  |
Добавлено через 29 секунд
Цитата Сообщение от MuslimPalit Посмотреть сообщение
почему смещаем на столько? С чем это связано?
С логикой (булевой)
1
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
13.09.2016, 21:51  [ТС]
DrOffset, хорош, вот упаковку и не понимал, сейчас наглядно видно как 3 числа превратились в одно

Добавлено через 3 минуты
DrOffset, т.е. получается что в одном байте - одно слово(8 бит). И смещение выполняется только этого слова.
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
15.09.2016, 19:16  [ТС]
данный код трудно перенести на Builder, т.е. некоторые типы не работают
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
15.09.2016, 19:57
Цитата Сообщение от MuslimPalit Посмотреть сообщение
данный код трудно перенести на Builder, т.е. некоторые типы не работают
Что значит не работают?
Это ты про uint8_t, uint32_t?
Заголовочный файл #include <stdint.h> подключается?
Если такого файла не находит, то можно на крайний случай задекларировать эти типы самостоятельно.
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
15.09.2016, 20:09  [ТС]
DrOffset, я хотел подключить vcl, данная программа с ее то возможностями в командной строке будет смотреться, как "серая мышь". Я vcl до сих пор не работал, так пару раз смотрел что да как да и книгу почитал. Просто думаю придется заново весь код писать, чтобы под vcl сделать.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
15.09.2016, 20:10
MuslimPalit, не, не надо. У тебя только вывод-то и изменится.
0
 Аватар для MuslimPalit
30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
15.09.2016, 20:21  [ТС]
DrOffset, я чуть постарался подправить, но ошибок было много, да и unordered_map не нашел аж в директорию залез, хотя библиотека хеш таблиц была

Добавлено через 2 минуты
DrOffset, наверное лучше будет создать проект vcl, вставить новый модуль и там поместить функции, и структуры

Добавлено через 4 минуты
DrOffset, если все что работает в VS должно работать и с vcl, то я начинаю ломать голову над всем этим, так как такой проект я создаю впервые, ну vcl.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2016, 20:21

Ошибка The used table type doesn't support FULLTEXT indexes
Обучаюсь по видео урокам в одном из уроков показан пример по реализации поиска. Но уроки как я понял в старой версии PHPmyadmin т.к при...

Error Code: 1146. Table doesn't exist
Описал процедуру: DROP PROCEDURE IF EXISTS insertColumn; DELIMITER // CREATE PROCEDURE insertColumn (tableName VARCHAR(28),...

Type error: Illegal variable type for this position
Нужно разделить список на два списка: в первом - N элементов с начала исходного списка, во втором - все что осталось. Моя попытка...

Error: array type has incomplete element type
в функции выдает ошибку \arifm.c|4|error: array type has incomplete element type| подправьте пожалуйста main #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru