Na tym forum przeczytałem o usuwaniu elementu z tablicy przez wskaźnik niby banalne, ale .... wcale nie.
#include "liststl.h"
namespace liststlnamespace { // pytanie 1 ?
namespace constexprData { // to zostaje
constexpr size_t arlen=10;
}
double changetype; // zamiast templatki :)
using arrayData=std::array<decltype(changetype),constexprData::arlen>;
arrayData ar{1,2,3,4.4,5,6,7,8,9,10};
std::list<arrayData::iterator>li;
std::list<arrayData::iterator> garbagecollector ;
}
1) czy z tego opłaca się zrobić templatkę i czy da zrobić krótką np. 10 linii by użyć w klasie "liststl" najepej w tym samym pliku, i bez specjalnych zabiegów by wstawiać różne typy do klasy do sprawdzania
A jak nie to
template <typename T>
void liststl::removeElement(T t) {
auto itli = liststlnamespace::li.begin();
// typedef std::common_type<decltype(*itli),int>::type NumericType;
// typedef std::common_type<decltype(*itli, double>::type FloatType;
// std::cout<<typeid(*itli).name()<<std::endl;
if(liststlnamespace::li.size()<=liststlnamespace::constexprData::arlen)
for(auto &x:liststlnamespace::li) {
//pytanie 2 if (is_same<decltype(*itli),decltype(t)>::value
if(*x==t ) {
*x=0;
liststlnamespace::garbagecollector.push_back(std::move(x));
liststlnamespace::li.erase(itli);
std::cout<< "\niteratory sa trudne\n";
break;
}
itli++;
}
};
2) Co tu zrobić by nie porównywać jak będą niezgodne typy?
Ta klasa jest po nic tak sobie przerabiam
<type_traits> | Microsoft Docs