add vector

This commit is contained in:
csyer
2024-02-22 19:53:46 +08:00
parent b648f3923d
commit d65c91fee8
24 changed files with 3974 additions and 2 deletions

View File

@ -0,0 +1,69 @@
Testing constructors and assignment operator...
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
Testing iterators...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Testing accessing methods...
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
2147483648
4294967296
8589934592
17179869184
34359738368
68719476736
137438953472
274877906944
549755813888
1099511627776
2199023255552
4398046511104
8796093022208
17592186044416
35184372088832
70368744177664
140737488355328
281474976710656
562949953421312
exceptions thrown correctly.
Testing push_back and pop_back...
9
22
21
20
5
Testing insert functions
0 1 2 100 3 200 4 5 6 7 8 9
Testing erase functions
0 1 2 3 4 5 6 7 8 9

132
vector/data/one/code.cpp Normal file
View File

@ -0,0 +1,132 @@
#include "vector.hpp"
#include <iostream>
#include <iomanip>
#include <vector>
void TestConstructor()
{
std::cout << "Testing constructors and assignment operator..." << std::endl;
sjtu::vector<int> v;
for (int i = 1; i <= 10; ++i) {
v.push_back(i);
}
const sjtu::vector<int> vc(v);
for (size_t i = 0; i < vc.size(); ++i) {
std::cout << vc[i] << " ";
}
std::cout << std::endl;
sjtu::vector<int> vv;
for (int i = 0; i < 10; ++i) {
vv.push_back(i);
}
for (size_t i = 0; i < vv.size(); ++i) {
std::cout << vv[i] << " ";
}
std::cout << std::endl;
vv = v;
for (size_t i = 0; i < vv.size(); ++i) {
std::cout << vv[i] << " ";
}
std::cout << std::endl;
}
void TestIterators()
{
std::cout << "Testing iterators..." << std::endl;
sjtu::vector<int> v;
for (int i = 1; i <= 20; ++i) {
v.push_back(i);
}
for (sjtu::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
const sjtu::vector<int> vc(v);
for (sjtu::vector<int>::const_iterator it = vc.cbegin(); it != vc.cend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
void TestAccessingMethod()
{
std::cout << "Testing accessing methods..." << std::endl;
sjtu::vector<long long> vd;
for (long long i = 0; i < 50; ++i) {
vd.push_back(1LL << i);
}
for (size_t i = 0; i < vd.size(); ++i) {
std::cout << vd[i] << std::endl;
}
try {
std::cout << vd.at(100) << std::endl;
} catch(...) {
std::cout << "exceptions thrown correctly." << std::endl;
}
}
void TestPush_Pop()
{
std::cout << "Testing push_back and pop_back..." << std::endl;
sjtu::vector<double> vd;
for (double i = 0.0; i < 10.0; i += 1.0) {
vd.push_back(i);
}
std::cout << vd.back() << std::endl;
for (double i = 20.0; i < 23.0; i += 1.0) {
vd.push_back(i);
}
std::cout << vd.back() << std::endl;
vd.pop_back();
std::cout << vd.back() << std::endl;
vd.pop_back();
std::cout << vd.back() << std::endl;
for (int i = 0; i < 5; ++i) {
vd.pop_back();
}
std::cout << vd.back() << std::endl;
}
void TestInsert()
{
std::cout << "Testing insert functions" << std::endl;
sjtu::vector<int> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
}
v.insert(v.begin() + 3, 100);
v.insert(v.begin() + 5, 200);
for (sjtu::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
void TestErase()
{
std::cout << "Testing erase functions" << std::endl;
sjtu::vector<int> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
}
v.insert(v.begin() + 3, 100);
v.insert(v.begin() + 5, 200);
v.erase(v.begin() + 5);
v.erase(v.begin() + 3);
for (sjtu::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
int main(int argc, char const *argv[])
{
TestConstructor();
TestIterators();
TestAccessingMethod();
TestPush_Pop();
TestInsert();
TestErase();
return 0;
}