Guest User

Untitled

a guest
Jul 21st, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. std::vector<std::vector<int>> main_vector;
  2. std::vector<int> temp_vector;
  3.  
  4. for (std::size_t i = 0; i < 5; i++)
  5. {
  6. main_vector.push_back(temp_vector);
  7. for (std::size_t j = 0; j < 5; j++)
  8. {
  9. main_vector[i][j] = j;
  10. }
  11. }
  12.  
  13. bin_file.open("test.txt", std::ios::out | std::ios::binary);
  14. bin_file.write((char *)&main_vector, sizeof(main_vector)); //не сработает
  15.  
  16. // Пишем размер внешнего вектора
  17. size_t sz = main_vector.size();
  18. stream.write(&sz,sizeof(sz));
  19.  
  20. for(size_t i = 0; i < sz; ++i)
  21. {
  22. // То же самое для каждого внутреннего:
  23. vector<int>& v = main_vector[i];
  24. size_t sz = v.size();
  25. stream.write(&sz,sizeof(sz));
  26. // Пишем данные
  27. for(size_t j = 0; j < sz; ++j)
  28. {
  29. int n = v[j];
  30. stream.write(&n,sizeof(n));
  31. }
  32. // Или, поскольку в векторе данные лежат подряд -
  33. // просто stream.write(v.data(), sizeof(int)*sz);
  34. }
  35.  
  36. int main(int argc, char *argv[]) {
  37. std::ofstream bin_file;
  38. std::ifstream read_file;
  39. std::vector<std::vector<int>> main_vector;
  40. main_vector.resize(5);
  41.  
  42. for (std::size_t i = 0; i < 5; i++) {
  43. for (std::size_t j = 0; j < 5; j++) {
  44. main_vector[i].push_back(j);
  45. }
  46. }
  47. for (int i {}; i < 5; ++i) {
  48. for (int j {}; j < 5; ++j) {
  49. std::cout << main_vector[i][j] << ' ';
  50. }
  51. }
  52. std::cout << std::endl;
  53.  
  54. bin_file.open("test.txt", std::ios::out | std::ios::binary);
  55. for (int i{}; i < main_vector.size(); ++i) {
  56. bin_file.write((char *)&main_vector[i][0],
  57. main_vector[i].size() * sizeof(main_vector[i][0]));
  58. }
  59. bin_file.close();
  60.  
  61. char array[100];
  62.  
  63. read_file.open("test.txt", std::ios::in | std::ios::binary);
  64. read_file.read(array, 100);
  65. read_file.close();
  66.  
  67. int *arr = reinterpret_cast<int *>(array);
  68. for (int i {}; i < 25; ++i) {
  69. std::cout << *arr << ' ';
  70. ++arr;
  71. }
  72.  
  73. return 0;
  74. }
Add Comment
Please, Sign In to add comment