Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wektor_cpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
wektor_cpp
Commits
01002383
Commit
01002383
authored
Apr 29, 2026
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refaktoryzacja - wydzieleneie pętli kopiujących do oddzielnych funkcji
parent
26511aef
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
17 deletions
+29
-17
wektor.cpp
wektor.cpp
+25
-17
wektor.h
wektor.h
+4
-0
No files found.
wektor.cpp
View file @
01002383
#include <iostream>
#include <iostream>
#include "wektor.h"
#include "wektor.h"
const
TypIndeksu
startowy_rozmiar_tablicy
=
8
;
// Dla klas, które same zarządzają pamięcią, istotne jest zdefiniowanie
// Dla klas, które same zarządzają pamięcią, istotne jest zdefiniowanie
// w spójny sposób takich elementów klasy, jak:
// w spójny sposób takich elementów klasy, jak:
// - konstruktor kopiujący
// - konstruktor kopiujący
// - operator przypisania
// - operator przypisania
// - destruktor
// - destruktor
// Definicje pomocnicze - unikamy duplikacji kodu.
// To jest zwykła funkcja wewnętrzna dla tego pliku
// BTW w języku C mamy memcpy, które robi coś takiego i może działać bardziej wydajnie...
void
kopiuj_zawartosc_tablicy
(
TypWartosci
*
cel
,
TypWartosci
*
zrodlo
,
TypIndeksu
rozmiar
)
{
for
(
TypIndeksu
i
=
0
;
i
<
rozmiar
;
i
++
)
{
cel
[
i
]
=
zrodlo
[
i
];
}
}
// To jest metoda prywatna w klasie Wektor - dzięki temu
// (że jest metodą, a nie zewnętrzną funkcją) ma dostęp do pól prywatnych.
void
Wektor
::
kopiuj_elementy
(
const
Wektor
&
zrodlowy
)
{
rozmiar_tablicy
=
zrodlowy
.
rozmiar_tablicy
;
liczba_elementow
=
zrodlowy
.
liczba_elementow
;
t
=
new
TypWartosci
[
rozmiar_tablicy
];
kopiuj_zawartosc_tablicy
(
t
,
zrodlowy
.
t
,
liczba_elementow
);
}
const
TypIndeksu
startowy_rozmiar_tablicy
=
8
;
Wektor
::
Wektor
()
Wektor
::
Wektor
()
:
rozmiar_tablicy
{
startowy_rozmiar_tablicy
},
:
rozmiar_tablicy
{
startowy_rozmiar_tablicy
},
liczba_elementow
{
0
}
liczba_elementow
{
0
}
...
@@ -22,22 +42,12 @@ Wektor::Wektor()
...
@@ -22,22 +42,12 @@ Wektor::Wektor()
// - wzajemne nadpisywanie zawartości podczas operowania na dwóch zmiennych
// - wzajemne nadpisywanie zawartości podczas operowania na dwóch zmiennych
// - double free pod koniec życia obiektów
// - double free pod koniec życia obiektów
Wektor
::
Wektor
(
const
Wektor
&
zrodlowy
)
Wektor
::
Wektor
(
const
Wektor
&
zrodlowy
)
:
rozmiar_tablicy
{
zrodlowy
.
rozmiar_tablicy
},
liczba_elementow
{
zrodlowy
.
liczba_elementow
}
{
{
t
=
new
TypWartosci
[
rozmiar_tablicy
];
kopiuj_elementy
(
zrodlowy
);
for
(
TypIndeksu
i
=
0
;
i
<
liczba_elementow
;
i
++
)
{
t
[
i
]
=
zrodlowy
.
t
[
i
];
}
}
}
Wektor
&
Wektor
::
operator
=
(
const
Wektor
&
zrodlowy
)
{
Wektor
&
Wektor
::
operator
=
(
const
Wektor
&
zrodlowy
)
{
rozmiar_tablicy
=
zrodlowy
.
rozmiar_tablicy
;
kopiuj_elementy
(
zrodlowy
);
liczba_elementow
=
zrodlowy
.
liczba_elementow
;
t
=
new
TypWartosci
[
rozmiar_tablicy
];
for
(
TypIndeksu
i
=
0
;
i
<
liczba_elementow
;
i
++
)
{
t
[
i
]
=
zrodlowy
.
t
[
i
];
}
return
*
this
;
return
*
this
;
}
}
...
@@ -55,9 +65,7 @@ void Wektor::push_back(TypWartosci e) {
...
@@ -55,9 +65,7 @@ void Wektor::push_back(TypWartosci e) {
// przerzuć elementy do większej tablicy
// przerzuć elementy do większej tablicy
rozmiar_tablicy
=
2
*
rozmiar_tablicy
;
rozmiar_tablicy
=
2
*
rozmiar_tablicy
;
TypWartosci
*
nt
=
new
TypWartosci
[
rozmiar_tablicy
];
TypWartosci
*
nt
=
new
TypWartosci
[
rozmiar_tablicy
];
for
(
TypIndeksu
i
=
0
;
i
<
liczba_elementow
;
i
++
)
{
kopiuj_zawartosc_tablicy
(
nt
,
t
,
liczba_elementow
);
nt
[
i
]
=
t
[
i
];
}
delete
[]
t
;
delete
[]
t
;
t
=
nt
;
// do t wpisujemy wskaźnik do nowe tablicy
t
=
nt
;
// do t wpisujemy wskaźnik do nowe tablicy
}
}
...
...
wektor.h
View file @
01002383
...
@@ -17,6 +17,10 @@ class Wektor {
...
@@ -17,6 +17,10 @@ class Wektor {
TypIndeksu
liczba_elementow
;
TypIndeksu
liczba_elementow
;
// powinno być liczba_elementow <= rozmiar_tablicy
// powinno być liczba_elementow <= rozmiar_tablicy
// pomocnicze metody prywatne
/** Z podanego wektora kopiuje elementy do wektora bieżącego. */
void
kopiuj_elementy
(
const
Wektor
&
zrodlowy
);
public
:
public
:
Wektor
();
Wektor
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment