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

Сериализация и десериализация vector'а int'ов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структуры С++ http://www.cyberforum.ru/cpp-beginners/thread251792.html
Помогите написать плиз!!!!! Описать структуру с именем NOTE, которое помещает следуйщие поля: -Фамилия, имя; - Номер телефона; - Дата рождения (масив из 3 чисел). Написать програму, которая виполняет следуйщие действия: - Введения с клавиатуры даных у масив, который состоит из восьми елементов типа NOTE;записи должны быть упорядочены по трем первым цифрам номера телефона. - вывксти на...
C++ Реализация алгоритма кодирования Шеннона-Фано задание: реализовать алгоритм кодирования Шеннона-Фано, ввести строку символов, на выходе получить таблицу"символ, вероятность, код символа" собственно код: #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <string.h> struct node http://www.cyberforum.ru/cpp-beginners/thread251790.html
C++ Перевертыш
Составить программу, которая определит, является ли заданное слово перевертышем (например, "кок", "шалаш" являются). Вот программа: #include <iostream> #include <string> #include <locale> using namespace std;
C++ Как создать принципиальную схему в MVS 2008 Ee?
Иногда встречаю в книгах схемы работы программы в виде разного рода квадратиков, ромбов, прямоугольников, кружочков, соединенных разнообразными стрелками. Есть ли возможность создать такую принципиальную схему в MVS 2008 Ee? И как, где создавать такую схему? Сам не нашел, к сожалению.
C++ поток прямоугольных импульсов http://www.cyberforum.ru/cpp-beginners/thread251773.html
нужно задать поток прямоугольных импульсов, воздействующих на дискретное отображение. Заранее огромное спасибо
C++ Двум. массив в си++ Ребят, задача такова Дана квадратная матрица A(N,N). Получить из неё массив B, если N - четно, и B, если N - нечетно, элементами которого являются суммы элементов, стоящих по периметрам исходной матрицы. Идея есть по поводу цикла, но он работает правильно только по первому периметру, а дальше не корректно Будьте добры, помогите с циклом. Заранее спасибо. for(k=0;k<p;k++) подробнее

Показать сообщение отдельно
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
05.03.2011, 21:02     Сериализация и десериализация vector'а int'ов
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
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iterator>
 
int main()
{ 
  std::vector< int > v;
  for( int i=0;i<10;++i )
    v.push_back( i );
  int length = v.size() * sizeof( int );
 
  int fd = open( "1.txt", O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600 );
  if( -1 == fd )
    {
      perror( "cant open file" );
      return -1;
    }
  if( -1 == ftruncate( fd, length ) )
    {
      perror( "cant truncate file" );
      return -1;
    }
  void* base = mmap( 0, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
  if( MAP_FAILED == base )
    {
      perror( "cant mapped file" );
      return -1;
    }
  memcpy( base, &v.front(), length );
  if( -1 == munmap( base, length ) )
    {
      perror( "error unmapping file" );
    }
  close( fd );
  v.clear();
 
  //unserialize file
  fd = open( "1.txt", O_RDWR, (mode_t)0600 );
  if( -1 == fd )
    {
      perror( "cant reopen file" );
      return -1;
    }
 
  base = mmap( 0, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
  if( MAP_FAILED == base )
    {
      perror( "cant remapped file" );
      return -1;
    }
 
  v.resize( length / sizeof(int) );
  memcpy( &v.front(), base, length );
  
  std::copy( v.begin(), v.end(), std::ostream_iterator<int>( std::cout, " " ) );
  if( -1 == munmap( base, length ) )
    {
      perror( "error unmapping file" );
    }
  close( fd );
  
}
даже работает

Добавлено через 11 минут
igorrr37, все хорошо, но
Цитата Сообщение от igorrr37 Посмотреть сообщение
v.size()*4
плохо, v.size() * sizeof( int )
int разным по размеру бывает
 
Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru