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

Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
23.04.2013, 19:17     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #1
Есть vector<bool> mas(300000);
как можно сгруппировать по 8 элементов этого вектора, чтобы записывать в файл. Ведь в файл запись осуществляется побайтно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
23.04.2013, 19:23
  #2

Не по теме:

Уже вторая аналогичная тема. Есть подозрение, что подход к задаче выбран не тот. Озвучьте задачу полностью.

танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
23.04.2013, 19:27  [ТС]     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #3
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

Уже вторая аналогичная тема. Есть подозрение, что подход к задаче выбран не тот. Озвучьте задачу полностью.

задача такая, реализовать метод Шеннона-Фано для сжатия изображения. Для каждого значения цвета код я получить смог. Код неравномерный. Я взял коды эти и через цикл получил один дленнющий вектор типа bool. Осталось его записать в файл. Но надо именно побитово, а побитово нельзя. Поэтому и надо как-то паковать в байты. Заранее спасибо
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
23.04.2013, 19:55     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #4
вот конвертация вектора в байт
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<bool> v = {true, true, false, false, false, false, false, false};
    if(sizeof(char) == 1)
    {
        char byte = 0;
        for(int i = 0; i < v.size(); ++i)
        {
            if(v.at(i))
                byte |= 1 << i;
        }
        std::cout << (int)byte;
    }
    else
        std::cout << "Error\n";
    return 0;
}
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
23.04.2013, 20:16     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #5
Цитата Сообщение от cyberbrain1000 Посмотреть сообщение
C++
1
if(sizeof(char) == 1)
По стандарту это условие верно всегда, при любых обстоятельствах.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
24.04.2013, 05:49  [ТС]     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #6
Цитата Сообщение от cyberbrain1000 Посмотреть сообщение
std::vector<bool> v = {true, true, false, false, false, false, false, false};
такую строку мой компилятор Visual Studio 2010 не воспринимает, ругается на скобки. И почему там всего 8 значений?
Yandex
Объявления
24.04.2013, 05:49     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл?
Ответ Создать тему
Опции темы

Текущее время: 23:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru