Skip to content

Commit fc92d51

Browse files
committed
Replace boost::ptr_vector<T> with std::vector<std::unique_ptr<T>>
1 parent e4e3816 commit fc92d51

7 files changed

+27
-34
lines changed

obsolete/include/mdds/mixed_type_matrix_storage.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#include <cassert>
3232

33-
#include <boost/ptr_container/ptr_vector.hpp>
3433
#include <boost/ptr_container/ptr_map.hpp>
3534
// Boost.Pool indirectly pulls in Boost.System, causing linking error
3635
// with Boost 1.50, because some (deprecated) symbols from System are

src/multi_type_vector_test_custom.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@
3535
#include <mdds/multi_type_vector_custom_func3.hpp>
3636

3737
#include <cassert>
38+
#include <memory>
3839
#include <sstream>
3940
#include <vector>
4041

41-
#include <boost/ptr_container/ptr_vector.hpp>
42-
4342
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])
4443

4544
using namespace std;
@@ -91,16 +90,16 @@ struct date
9190
template<typename T>
9291
class cell_pool
9392
{
94-
boost::ptr_vector<T> m_pool;
93+
std::vector<std::unique_ptr<T>> m_pool;
9594
public:
9695
cell_pool() = default;
9796
cell_pool(const cell_pool&) = delete;
9897
cell_pool& operator=(const cell_pool&) = delete;
9998

10099
T* construct()
101100
{
102-
m_pool.push_back(new T);
103-
return &m_pool.back();
101+
m_pool.emplace_back(new T);
102+
return m_pool.back().get();
104103
}
105104

106105
void clear() { m_pool.clear(); }

src/multi_type_vector_test_default.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
#include <vector>
3737
#include <deque>
3838

39-
#include <boost/ptr_container/ptr_vector.hpp>
40-
4139
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])
4240

4341
using namespace std;

src/multi_type_vector_test_perf.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
#include <vector>
3636
#include <deque>
3737

38-
#include <boost/ptr_container/ptr_vector.hpp>
39-
4038
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])
4139

4240
using namespace std;

src/point_quad_tree_test.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,13 @@
2929
#include "test_global.hpp"
3030

3131
#include <algorithm>
32+
#include <memory>
3233
#include <vector>
3334
#include <sstream>
34-
#include <boost/ptr_container/ptr_vector.hpp>
3535
#include <boost/cstdint.hpp>
3636

3737
using namespace std;
3838
using namespace mdds;
39-
using ::boost::ptr_vector;
4039
using ::boost::uint16_t;
4140

4241
struct data_printer : public unary_function<string*, void>
@@ -144,13 +143,13 @@ void pqt_test_insertion_removal()
144143
assert(db.size() == 0);
145144

146145
// Create all data instances.
147-
ptr_vector<string> data_store;
146+
vector<unique_ptr<string>> data_store;
148147
data_store.reserve(100);
149148
for (size_t i = 0; i < 100; ++i)
150149
{
151150
ostringstream os;
152151
os << "0x" << hex << i;
153-
data_store.push_back(new string(os.str()));
152+
data_store.emplace_back(new string(os.str()));
154153
}
155154

156155
vector<db_type::node_data> expected;
@@ -162,7 +161,7 @@ void pqt_test_insertion_removal()
162161
{
163162
int32_t x = i*10 + 1, y = j*10 + 1;
164163
size_t index = i*10 + j;
165-
const string* data_ptr = &data_store[index];
164+
const string* data_ptr = data_store[index].get();
166165
cout << "inserting '" << *data_ptr << "' at (" << x << "," << y << ")" << endl;
167166
db.insert(x, y, data_ptr);
168167
expected.push_back(db_type::node_data(x, y, data_ptr));

src/rectangle_set_test.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929
#include "test_global.hpp"
3030

3131
#include <iostream>
32+
#include <memory>
33+
#include <vector>
3234
#include <sstream>
33-
#include <boost/ptr_container/ptr_vector.hpp>
3435

3536
using namespace std;
3637
using namespace mdds;
37-
using ::boost::ptr_vector;
3838

3939
template<typename T>
4040
struct rm_pointer
@@ -654,22 +654,22 @@ void rect_test_perf_insertion_fixed_x()
654654
cout << "data count: " << data_count << endl;
655655

656656
set_type db;
657-
ptr_vector<range_type> data_store;
657+
vector<unique_ptr<range_type>> data_store;
658658
data_store.reserve(data_count);
659659
{
660660
stack_printer __stack_printer2__("::rect_test_perf_insertion range instance creation");
661661
for (size_t i = 0; i < data_count; ++i)
662662
{
663663
ostringstream os;
664664
os << hex << i;
665-
data_store.push_back(new range_type(0, 0, 10, i+1, os.str()));
665+
data_store.emplace_back(new range_type(0, 0, 10, i+1, os.str()));
666666
}
667667
}
668668

669669
{
670670
stack_printer __stack_printer2__("::rect_test_perf_insertion data insertion");
671671
for (size_t i = 0; i < data_count; ++i)
672-
insert_range(db, data_store[i]);
672+
insert_range(db, *data_store[i]);
673673
}
674674
assert(db.size() == data_count);
675675

@@ -758,7 +758,7 @@ void rect_test_perf_insertion_fixed_x()
758758
{
759759
stack_printer __stack_printer__("::rect_test_perf_insertion 10000 removals");
760760
for (size_t i = 0; i < 10000; ++i)
761-
db.remove(&data_store[i]);
761+
db.remove(data_store[i].get());
762762
}
763763

764764
{
@@ -778,22 +778,22 @@ void rect_test_perf_insertion_fixed_y()
778778
cout << "data count: " << data_count << endl;
779779

780780
set_type db;
781-
ptr_vector<range_type> data_store;
781+
vector<unique_ptr<range_type>> data_store;
782782
data_store.reserve(data_count);
783783
{
784784
stack_printer __stack_printer2__("::rect_test_perf_insertion range instance creation");
785785
for (size_t i = 0; i < data_count; ++i)
786786
{
787787
ostringstream os;
788788
os << hex << i;
789-
data_store.push_back(new range_type(0, 0, i+1, 10, os.str()));
789+
data_store.emplace_back(new range_type(0, 0, i+1, 10, os.str()));
790790
}
791791
}
792792

793793
{
794794
stack_printer __stack_printer2__("::rect_test_perf_insertion data insertion");
795795
for (size_t i = 0; i < data_count; ++i)
796-
insert_range(db, data_store[i]);
796+
insert_range(db, *data_store[i]);
797797
}
798798
assert(db.size() == data_count);
799799

@@ -882,7 +882,7 @@ void rect_test_perf_insertion_fixed_y()
882882
{
883883
stack_printer __stack_printer__("::rect_test_perf_insertion 10000 removals");
884884
for (size_t i = 0; i < 10000; ++i)
885-
db.remove(&data_store[i]);
885+
db.remove(data_store[i].get());
886886
}
887887

888888
{

src/segment_tree_test.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
#include <cstdlib>
3434
#include <cstdio>
3535
#include <iostream>
36+
#include <memory>
3637
#include <sstream>
3738
#include <string>
38-
39-
#include <boost/ptr_container/ptr_vector.hpp>
39+
#include <vector>
4040

4141
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])
4242

@@ -635,20 +635,20 @@ void st_test_search_on_uneven_tree()
635635

636636
for (key_type data_count = 10; data_count < 20; ++data_count)
637637
{
638-
boost::ptr_vector<test_data> data_store;
638+
vector<unique_ptr<test_data>> data_store;
639639
data_store.reserve(data_count);
640640
for (key_type i = 0; i < data_count; ++i)
641641
{
642642
ostringstream os;
643643
os << hex << showbase << i;
644-
data_store.push_back(new test_data(os.str()));
644+
data_store.emplace_back(new test_data(os.str()));
645645
}
646646
assert(data_store.size() == static_cast<size_t>(data_count));
647647

648648
db_type db;
649649
for (key_type i = 0; i < data_count; ++i)
650650
{
651-
test_data* p = &data_store[i];
651+
test_data* p = data_store[i].get();
652652
db.insert(0, i+1, p);
653653
}
654654
assert(db.size() == static_cast<size_t>(data_count));
@@ -678,15 +678,15 @@ void st_test_perf_insertion()
678678
key_type data_count = 1000000;
679679

680680
// First, create test data instances and store them into a vector.
681-
boost::ptr_vector<test_data> data_store;
681+
vector<unique_ptr<test_data>> data_store;
682682
{
683683
stack_printer __stack_printer2__("::st_test_perf_insertion:: data array creation");
684684
data_store.reserve(data_count);
685685
for (key_type i = 0; i < data_count; ++i)
686686
{
687687
ostringstream os;
688688
os << hex << i;
689-
data_store.push_back(new test_data(os.str()));
689+
data_store.emplace_back(new test_data(os.str()));
690690
}
691691
}
692692
assert(data_store.size() == data_count);
@@ -696,7 +696,7 @@ void st_test_perf_insertion()
696696
stack_printer __stack_printer2__("::st_test_perf_insertion:: data array insertion into segment tree");
697697
for (key_type i = 0; i < data_count; ++i)
698698
{
699-
test_data* p = &data_store[i];
699+
test_data* p = data_store[i].get();
700700
db.insert(0, i+1, p);
701701
}
702702
}
@@ -800,7 +800,7 @@ void st_test_perf_insertion()
800800
stack_printer __stack_printer2__("::st_test_perf_insertion:: 10000 segment removals");
801801
for (key_type i = 0; i < 10000; ++i)
802802
{
803-
test_data* p = &data_store[i];
803+
test_data* p = data_store[i].get();
804804
db.remove(p);
805805
}
806806
}

0 commit comments

Comments
 (0)