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

Перегрузка += для множества реализованного через массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где могут быть ошибки? http://www.cyberforum.ru/cpp-beginners/thread858619.html
#include <stdio.h> void main () { int a, b, c, d; printf ("Enter the quality of seconds\n"); scanf ("%d", &a); if (a<60) {printf ("%d sec\n", a);} else if (60<a<3600)
C++ карточная игра (SOS) Помогите пожалуйста дописать карточную игру #include <iostream> #include <Windows.h> #include <math.h> #include <conio.h> using namespace std; void main () { SetConsoleOutputCP(1256); http://www.cyberforum.ru/cpp-beginners/thread858613.html
C++ Двоичный В/В объектов string. Ошибки
Как правильно выводить эти объекты в двоичный файл? В таком случае выскакивают ошибки после завершения программы. int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); string tmp, tmp2; cin >> tmp;
Многопоточность и ститичность =) C++
программка большая и архитектура такая: class cApp : public cApplication { private: ... public: cApp(); BOOL Init();
C++ Вывод символов зная код http://www.cyberforum.ru/cpp-beginners/thread858600.html
подскажите пожалуйста, вот есть код 3,4,5,6 -это символы масти карт, как вывести эти символы?
C++ Как найти минимальный элемент матрицы? Подскажите пожалуйста, как научить данную программу, которая умножает 2 введенные с клавиатуры матрицы, находить и выводить на экран минимальный элемент полученной матрицы S? #include "stdafx.h" #include <iostream> using namespace std; int main () { setlocale (LC_ALL, "RUS"); подробнее

Показать сообщение отдельно
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
08.05.2013, 03:57     Перегрузка += для множества реализованного через массив
bestpalyer1, как я понял, вы хотите из второго массива добавить только те элементы, которые в текущем не встречались? Если я правильно понял, то тогда лучше вот так:
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
const massiv& massiv::operator+=(const massiv& dub)
{
   size = size + dub.size;
   udata = new char [size];
 
   for (int i = 0; i < length; i++)
   {
      udata[i] = data[i];
   }
 
   bool find;
   int old_length = length;
 
   for (int i = 0; i < dub.length; ++j)
   {
      find = false;
      for (int j = 0; (j < old_length) && !find; ++j)
      {
         find = (dub.data[i] == udata[j]);
      }
 
      if (!find)
      {
         udata[length++] = dub.data[i];
      }
   }
 
   delete [] data;
 
   data = udata;
 
   return *this;
}
Обратите внимание, в конце я не выделяю заново память и не переписываю элементы, а просто data присваиваю значение указателя udata. Я ещё не пойму, зачем вспомогательный массив udata вы сделали членом класса (т.е. полем)? Можно было просто локально объявить и это было бы более правильным.
 
Текущее время: 03:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru