Library 5

This commit is contained in:
Alessandro Ferro 2021-06-09 12:11:53 +02:00
parent 084a2df94e
commit ed5f80bb78
7 changed files with 12 additions and 11 deletions

View File

@ -465,8 +465,8 @@ BTInOrderIterator<Data>::BTInOrderIterator(const BTInOrderIterator& itr){
template <typename Data> template <typename Data>
BTInOrderIterator<Data>::BTInOrderIterator(BTInOrderIterator&& toMove) noexcept{ BTInOrderIterator<Data>::BTInOrderIterator(BTInOrderIterator&& toMove) noexcept{
std::move(curr, toMove.curr); std::swap(curr, toMove.curr);
std::move(stack, toMove.stack); std::swap(stack, toMove.stack);
} }
template <typename Data> template <typename Data>
@ -484,8 +484,8 @@ BTInOrderIterator<Data>& BTInOrderIterator<Data>::operator=(const BTInOrderItera
template <typename Data> template <typename Data>
BTInOrderIterator<Data>& BTInOrderIterator<Data>::operator=(BTInOrderIterator&& toMove) noexcept{ BTInOrderIterator<Data>& BTInOrderIterator<Data>::operator=(BTInOrderIterator&& toMove) noexcept{
std::move(curr, toMove.curr); std::swap(curr, toMove.curr);
std::move(stack, toMove.stack); std::swap(stack, toMove.stack);
return *this; return *this;
} }

View File

@ -134,7 +134,6 @@ BinaryTreeLnk<Data>& BinaryTreeLnk<Data>::operator=(const BinaryTreeLnk<Data>& t
template <typename Data> template <typename Data>
BinaryTreeLnk<Data>& BinaryTreeLnk<Data>::operator=(BinaryTreeLnk<Data>&& tree) noexcept{ BinaryTreeLnk<Data>& BinaryTreeLnk<Data>::operator=(BinaryTreeLnk<Data>&& tree) noexcept{
Clear();
std::swap(size, tree.size); std::swap(size, tree.size);
std::swap(root, tree.root); std::swap(root, tree.root);
return *this; return *this;

View File

@ -117,12 +117,14 @@ BinaryTreeVec<Data>& BinaryTreeVec<Data>::operator=(const BinaryTreeVec<Data>& b
template <typename Data> template <typename Data>
BinaryTreeVec<Data>& BinaryTreeVec<Data>::operator=(BinaryTreeVec<Data>&& bt) noexcept{ BinaryTreeVec<Data>& BinaryTreeVec<Data>::operator=(BinaryTreeVec<Data>&& bt) noexcept{
Clear();
std::swap(size, bt.size); std::swap(size, bt.size);
std::swap(tree, bt.tree); std::swap(tree, bt.tree);
for(ulong i=0 ; i<size ; ++i){ for(ulong i=0 ; i<size ; ++i){
tree[i]->ReferenceToTree = this; tree[i]->ReferenceToTree = this;
} }
for(ulong j=0 ; j<bt.Size() ; ++j){
(bt.tree[j])->ReferenceToTree = &bt;
}
return *this; return *this;
} }

2
librerie/exercise5/list/list.cpp Executable file → Normal file
View File

@ -167,7 +167,7 @@ void List<Data>::InsertAtBack(const Data& data){
template <typename Data> template <typename Data>
void List<Data>::InsertAtBack(Data&& data){ void List<Data>::InsertAtBack(Data&& data){
if(size == 0){ if(size == 0){
InsertAtFront(data); InsertAtFront(std::move(data));
} }
else{ else{
struct Node* last = new Node(std::move(data)); struct Node* last = new Node(std::move(data));

View File

@ -37,7 +37,7 @@ QueueVec<Data>::QueueVec(const QueueVec& toCopy){
template <typename Data> template <typename Data>
QueueVec<Data>::QueueVec(QueueVec&& toMove) noexcept{ QueueVec<Data>::QueueVec(QueueVec&& toMove) noexcept{
Clear(); Clear(); // the moved Queue will be in a consistent state
std::swap(Elements, toMove.Elements); std::swap(Elements, toMove.Elements);
std::swap(rear, toMove.rear); std::swap(rear, toMove.rear);
std::swap(front, toMove.front); std::swap(front, toMove.front);
@ -140,7 +140,7 @@ bool QueueVec<Data>::Empty() const noexcept{
template <typename Data> template <typename Data>
ulong QueueVec<Data>::Size() const noexcept{ ulong QueueVec<Data>::Size() const noexcept{
//if(size == 0) return 0; // this won't ever get executed, it's here just in case //if(size == 0) return 0; // this won't ever get executed, it's here just in case
return ((rear + size) - front) % size; return ((rear + size) - front) % size;
} }

View File

@ -52,7 +52,7 @@ void StackLst<Data>::Push(const Data& element){
template <typename Data> template <typename Data>
void StackLst<Data>::Push(Data&& element) noexcept{ void StackLst<Data>::Push(Data&& element) noexcept{
List<Data>::InsertAtFront(element); List<Data>::InsertAtFront(std::move(element));
} }
template <typename Data> template <typename Data>

View File

@ -44,7 +44,7 @@ StackVec<Data>& StackVec<Data>::operator=(const StackVec<Data>& copyFrom){
template <typename Data> template <typename Data>
StackVec<Data>& StackVec<Data>::operator=(StackVec<Data>&& moveFrom) noexcept{ StackVec<Data>& StackVec<Data>::operator=(StackVec<Data>&& moveFrom) noexcept{
Vector<Data>::operator=(std::move(moveFrom)); Vector<Data>::operator=(std::move(moveFrom));
stackSize = moveFrom.Size(); std::swap(stackSize, moveFrom.stackSize);
return *this; return *this;
} }