vector insert ok

This commit is contained in:
hugogogo
2022-06-10 16:47:56 +02:00
parent 68ada8ca68
commit c187d34ce7
4 changed files with 240 additions and 73 deletions

View File

@@ -11,11 +11,23 @@
#include "vector.hpp"
#endif
struct mystruct { int value; };
/**/ // struct for tests
/**/
/**/ struct mystruct {
/**/ public:
/**/ mystruct(int data = 1) {_val = new int[1]; _val[0] = data;}
/**/ ~mystruct() {delete[] _val;}
/**/ int * get_data() const {return _val;}
/**/ private:
/**/ int * _val;
/**/ };
/**/ std::ostream & operator<<(std::ostream & o, mystruct const & rhs) {
/**/ o << rhs.get_data()[0];
/**/ return (o);
/**/ }
int main() {
/*
TEST(vector::vector (constructor))
{
// title
@@ -105,7 +117,6 @@ int main() {
std::cout << '\n';
}
TESTEND
*/
/*
@@ -152,7 +163,6 @@ int main() {
*/
/*
TEST(vector::size)
{
// title
@@ -623,95 +633,177 @@ int main() {
std::cout << "capacity : " << myvector.capacity() << '\n';
}
TESTEND
*/
TEST(vector::insert)
{
// // title
// TITLE(cplusplus.com reference :)
//
// std::vector<int> myvector (3,100);
// std::vector<int>::iterator it;
//
// it = myvector.begin();
// it = myvector.insert ( it , 200 );
//
// myvector.insert (it,2,300);
//
// // "it" no longer valid, get a new one:
// it = myvector.begin();
//
// std::vector<int> anothervector (2,400);
// myvector.insert (it+2,anothervector.begin(),anothervector.end());
//
// int myarray [] = { 501,502,503 };
// myvector.insert (myvector.begin(), myarray, myarray+3);
//
// std::cout << "myvector contains:";
// for (it=myvector.begin(); it<myvector.end(); it++)
// std::cout << ' ' << *it;
// std::cout << '\n';
ft::vector<int>::iterator it;
ft::vector<mystruct*>::iterator its;
int i;
// title
TITLE(cplusplus.com reference :)
ft::vector<int> myvector (3,100);
it = myvector.begin();
it = myvector.insert ( it , 200 );
myvector.insert (it,2,300);
ft::vector<int> anothervector (2,400);
it = myvector.begin();
myvector.insert (it+2,anothervector.begin(),anothervector.end());
int myarray [] = { 501,502,503 };
myvector.insert (myvector.begin(), myarray, myarray+3);
std::cout << "myvector contains:";
for (it=myvector.begin(); it<myvector.end(); it++)
std::cout << ' ' << *it;
std::cout << '\n';
// title
TITLE(tests positions on insert(pos, value) :)
ft::vector<int> myvector2 (3,100);
ft::vector<int>::iterator it2;
it2 = myvector2.begin();
std::cout << "\nsize:" << myvector2.size() << " capacity:" << myvector2.capacity() << "\n";
myvector2.insert ( it2 , 200 );
it = myvector2.begin();
std::cout << "size:" << myvector2.size() << " capacity:" << myvector2.capacity() << "\n";
myvector2.insert ( it , 200 );
std::cout << "myvector contains:";
for (it2 = myvector2.begin(); it2 < myvector2.end(); it2++)
std::cout << ' ' << *it2;
for (it = myvector2.begin(); it < myvector2.end(); it++)
std::cout << ' ' << *it;
std::cout << "\nsize:" << myvector2.size() << " capacity:" << myvector2.capacity() << "\n";
ft::vector<int> myvector3 (3,100);
ft::vector<int>::iterator it3;
it3 = myvector3.end();
it = myvector3.end();
std::cout << "\nsize:" << myvector3.size() << " capacity:" << myvector3.capacity() << "\n";
myvector3.insert ( it3 , 200 );
myvector3.insert ( it , 200 );
std::cout << "myvector contains:";
for (it3 = myvector3.begin(); it3 < myvector3.end(); it3++)
std::cout << ' ' << *it3;
for (it = myvector3.begin(); it < myvector3.end(); it++)
std::cout << ' ' << *it;
std::cout << "\nsize:" << myvector3.size() << " capacity:" << myvector3.capacity() << "\n";
// title
TITLE(tests positions on insert(pos, value) with struct :)
mystruct s_1;
mystruct s_2;
ft::vector<mystruct*> myvector4;
mystruct *s;
s_1.value = 1;
s_2.value = 2;
i = 0;
while (i < 3)
{
s = new mystruct(i++);
myvector4.push_back(s);
}
ft::vector<mystruct> myvector4 (3,s_1);
ft::vector<mystruct>::iterator it4;
it4 = myvector4.begin();
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
myvector4.insert ( it4 , s_2 );
its = myvector4.begin();
std::cout << "size:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
s = new mystruct(i++);
myvector4.insert ( its , s );
std::cout << "myvector contains:";
for (it4 = myvector4.begin(); it4 < myvector4.end(); it4++)
std::cout << ' ' << (*it4).value;
for (its = myvector4.begin(); its < myvector4.end(); its++)
std::cout << ' ' << **its;
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
it4 = myvector4.begin() + 2;
its = myvector4.begin() + 2;
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
myvector4.insert ( it4 , s_2 );
s = new mystruct(i++);
myvector4.insert ( its , s );
std::cout << "myvector contains:";
for (it4 = myvector4.begin(); it4 < myvector4.end(); it4++)
std::cout << ' ' << (*it4).value;
for (its = myvector4.begin(); its < myvector4.end(); its++)
std::cout << ' ' << **its;
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
its = myvector4.end();
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
s = new mystruct(i++);
myvector4.insert ( its , s );
std::cout << "myvector contains:";
for (its = myvector4.begin(); its < myvector4.end(); its++)
std::cout << ' ' << **its;
std::cout << "\nsize:" << myvector4.size() << " capacity:" << myvector4.capacity() << "\n";
// title
TITLE(tests insert(pos, size, value) :)
ft::vector<int> myvector5;
for (i = 1; i <= 5; i++)
myvector5.push_back(i * 100);
it = myvector5.begin() + 1;
myvector5.insert ( it , 150 );
it = myvector5.end();
myvector5.insert (it,2,600);
it = myvector5.end() - 2;
myvector5.insert (it,2,550);
std::cout << "myvector contains:";
for (it = myvector5.begin(); it < myvector5.end(); it++)
std::cout << ' ' << *it;
std::cout << '\n';
std::cout << "\nsize:" << myvector5.size() << " capacity:" << myvector5.capacity() << "\n";
// title
TITLE(tests positions on insert(pos, value) with struct :)
ft::vector<mystruct*> myvector6;
i = 1;
while (i <= 5)
{
s = new mystruct(i++ * 100);
myvector6.push_back(s);
}
its = myvector6.begin() + 1;
s = new mystruct(150);
myvector6.insert ( its , s );
its = myvector6.end();
s = new mystruct(600);
myvector6.insert ( its, 2, s );
its = myvector6.end() - 2;
s = new mystruct(550);
myvector6.insert ( its, 2, s );
std::cout << "myvector contains:";
for (its = myvector6.begin(); its < myvector6.end(); its++)
std::cout << ' ' << **its;
std::cout << "\nsize:" << myvector6.size() << " capacity:" << myvector6.capacity() << "\n";
// title
TITLE(tests insert(pos, first, last) with struct :)
ft::vector<mystruct*> myvector7;
for (i = 0; i < 5; i++)
{
s = new mystruct(42);
myvector7.push_back(s);
}
its = myvector7.begin() + 2;
myvector7.insert ( its, myvector6.begin() + 3, myvector6.end() - 2 );
std::cout << "myvector contains:";
for (its = myvector7.begin(); its < myvector7.end(); its++)
std::cout << ' ' << **its;
std::cout << "\nsize:" << myvector7.size() << " capacity:" << myvector7.capacity() << "\n";
}
TESTEND
/*
TEST(vector::erase)
{
// title
@@ -843,7 +935,6 @@ int main() {
myvector.get_allocator().deallocate(p,5);
}
TESTEND
*/
// execute tests and print them :