CSRT-NTUA / AlgoPlus

AlgoPlus is a C++17 library for complex data structures and algorithms
https://csrt-ntua.github.io/AlgoPlus
Apache License 2.0
141 stars 20 forks source link

added copy constructor to min_heap.h #41

Open 77Transam opened 4 months ago

77Transam commented 4 months ago

Created a copy constructor for the heap.

spirosmaggioros commented 4 months ago

@77Transam Thanks for your interest to contributing and solving issues. I advice you to read the CONTRIBUTE.md and - in general - the readme files to see how to contribute. In your case, we just need to add some unit tests for the new function you implemented in order to be accepted. If you have any questions i will be pleased to answer them. Thank you!

77Transam commented 4 months ago

Sorry, I am new at this. I tired following the steps listed under the Windows section in readme.md to run the tests. When I typed in make at the command prompt, I get the error message; 'make' is not recognized as an internal or external command, operable program or batch file. Can you offer some assistance?

spirosmaggioros commented 4 months ago

Maybe you have to add C:\MinGW\bin to the path first. I don't know much about windows or what machine you have.Make sure you have MinGW downloaded first and foremost.

77Transam commented 4 months ago

I have C:\mingw64\bin added to my path. I am also using VS code. Is there any other information that might help us figure this out?

spirosmaggioros commented 4 months ago

It is your machine's problem that make is not recognized, i mean you can google it and maybe find a solution cause im not in control of your computer. Maybe try MinGW32-make instead of make. If this won't help, check this issue https://stackoverflow.com/questions/23723364/windows-7-make-is-not-recognized-as-an-internal-or-external-command-operabl

77Transam commented 4 months ago

Thank you. The MingGW32-make did work. After changing the directory to tests, I was not able to go any further ./ is not recognized by windows. I also was not able to locate the path to the file in question execute.

$ ./runUnitTests
bash: ./runUnitTests: No such file or directory
$ runUnitTests
bash: runUnitTests: command not found
spirosmaggioros commented 4 months ago

I guess there's an error in building. Please read the log of the build after the cmake .. or MinGW32-make. MinGW32-make should start building all the files, it should take approximately 1 minute to build and you should see all the files building up to 100%. If this don't happen for some reason, then the build failed some steps before.

77Transam commented 4 months ago

I am getting errors when building on the hash_table and mat_1d

[ 67%] Building CXX object tests/CMakeFiles/runUnitTests.dir/hash_table/hash_table.cc.obj
In file included from C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\hash_table\hash_table.cc:1:
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/classes/hash_table/hash_table.h: In function 'std::ostream& operator<<(std::ostream&, hash_table<KeyType, ValueType>&)':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/classes/hash_table/hash_table.h:140:3: warning: no return statement in function returning non-void [-Wreturn-type]
  140 |   }
      |   ^
[ 69%] Building CXX object tests/CMakeFiles/runUnitTests.dir/linalg/mat1d/mat_1d.cc.obj
In file included from C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:1:
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:29:29: error: expected ')' before '<' token
   29 |   explicit Mat1d(std::vector<T> v = {}) : __size(SIZE) {
      |                 ~           ^
      |                             )
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:29:39: error: expected unqualified-id before ')' token
   29 |   explicit Mat1d(std::vector<T> v = {}) : __size(SIZE) {
      |                                       ^
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h: In constructor 'Mat1d<T, SIZE>::Mat1d(T)':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:58:12: error: returning a value from a constructor
   58 |     return *(this);
      |            ^~~~~~~
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc: In function 'void C_A_T_C_H_T_E_S_T_0()':
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:9:17: error: no matching function for call to 'Mat1d<int, 5>::Mat1d()'
    9 |   Mat1d<int, 5> mat;
      |                 ^~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = int; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note:   candidate expects 1 argument, 0 provided
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = int; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note:   candidate expects 1 argument, 0 provided
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:21:65: error: no matching function for call to 'Mat1d<char, 10>::Mat1d(<brace-enclosed initializer list>)'
   21 |   Mat1d<char, 10> mat2({'a','b','c','d','e','f','g','h','i','j'});
      |                                                                 ^
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = char; long long unsigned int SIZE = 10]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'Mat1d<char, 10>&'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |                  ~~~~~~~^~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = char; long long unsigned int SIZE = 10]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:26: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'char'
   54 |   explicit Mat1d(const T val) noexcept {
      |                  ~~~~~~~~^~~
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc: In function 'void C_A_T_C_H_T_E_S_T_2()':
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:31:17: error: no matching function for call to 'Mat1d<int, 5>::Mat1d()'
   31 |   Mat1d<int, 5> mat1;
      |                 ^~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = int; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note:   candidate expects 1 argument, 0 provided
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = int; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note:   candidate expects 1 argument, 0 provided
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:44:18: error: no matching function for call to 'Mat1d<char, 5>::Mat1d()'
   44 |   Mat1d<char, 5> mat3;
      |                  ^~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = char; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note:   candidate expects 1 argument, 0 provided
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = char; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note:   candidate expects 1 argument, 0 provided
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:49:18: error: no matching function for call to 'Mat1d<char, 5>::Mat1d()'
   49 |   Mat1d<char, 5> mat4;
      |                  ^~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = char; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note:   candidate expects 1 argument, 0 provided
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = char; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note:   candidate expects 1 argument, 0 provided
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc: In function 'void C_A_T_C_H_T_E_S_T_4()':
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:61:43: error: no matching function for call to 'Mat1d<char, 5>::Mat1d(<brace-enclosed initializer list>)'
   61 |   Mat1d<char, 5> mat({'a','b','c','d','e'});
      |                                           ^
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = char; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'Mat1d<char, 5>&'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |                  ~~~~~~~^~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = char; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:26: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'char'
   54 |   explicit Mat1d(const T val) noexcept {
      |                  ~~~~~~~~^~~
C:\Users\att77\Projects\CPPProjects\AlgoPlus\tests\linalg\mat1d\mat_1d.cc:69:69: error: no matching function for call to 'Mat1d<std::__cxx11::basic_string<char>, 5>::Mat1d(<brace-enclosed initializer list>)'
   69 |   Mat1d<std::string, 5> mat2({"hello", "world", "we", "are", "csrt"});
      |                                                                     ^
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(Mat1d<T, SIZE>&) [with T = std::__cxx11::basic_string<char>; long long unsigned int SIZE = 5]'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:66:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'Mat1d<std::__cxx11::basic_string<char>, 5>&'
   66 |   explicit Mat1d(Mat1d &mat) : __size(SIZE) {
      |                  ~~~~~~~^~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:12: note: candidate: 'Mat1d<T, SIZE>::Mat1d(T) [with T = std::__cxx11::basic_string<char>; long long unsigned int SIZE = 5]'
   54 |   explicit Mat1d(const T val) noexcept {
      |            ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:54:26: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::__cxx11::basic_string<char>'
   54 |   explicit Mat1d(const T val) noexcept {
      |                  ~~~~~~~~^~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h: In member function 'T& Mat1d<T, SIZE>::operator[](size_t) [with T = int; long long unsigned int SIZE = 5]':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:148:5: warning: control reaches end of non-void function [-Wreturn-type]
  148 |     catch(std::invalid_argument &e){
      |     ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h: In member function 'T& Mat1d<T, SIZE>::operator[](size_t) [with T = char; long long unsigned int SIZE = 10]':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:148:5: warning: control reaches end of non-void function [-Wreturn-type]
  148 |     catch(std::invalid_argument &e){
      |     ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h: In member function 'Mat1d<T, SIZE>& Mat1d<T, SIZE>::operator=(Mat1d<T, SIZE>&) [with T = char; long long unsigned int SIZE = 5]':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:97:5: warning: control reaches end of non-void function [-Wreturn-type]
   97 |     catch(std::logic_error &e){
      |     ^~~~~
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h: In member function 'T& Mat1d<T, SIZE>::operator[](size_t) [with T = char; long long unsigned int SIZE = 5]':
C:/Users/att77/Projects/CPPProjects/AlgoPlus/src/linalg/mat_1d.h:148:5: warning: control reaches end of non-void function [-Wreturn-type]
  148 |     catch(std::invalid_argument &e){
      |     ^~~~~
MinGW32-make[2]: *** [tests\CMakeFiles\runUnitTests.dir\build.make:511: tests/CMakeFiles/runUnitTests.dir/linalg/mat1d/mat_1d.cc.obj] Error 1
MinGW32-make[1]: *** [CMakeFiles\Makefile2:97: tests/CMakeFiles/runUnitTests.dir/all] Error 2
MinGW32-make: *** [makefile:100: all] Error 2