ソースを参照

fixed reserve

Michele Caini 8 年 前
コミット
f477c0ab87

+ 2 - 5
src/entt/entity/registry.hpp

@@ -261,11 +261,8 @@ public:
      * @tparam cap Desired capacity.
      */
     void reserve(size_type cap) {
-        const auto last = entity_type(cap);
-
-        for(auto entity = candidate(); entity < last; ++entity) {
-            available.push_back(entity);
-        }
+        entities.reserve(cap);
+        available.reserve(cap);
     }
 
     /**

+ 1 - 0
test/entt/entity/registry.cpp

@@ -6,6 +6,7 @@ TEST(DefaultRegistry, Functionalities) {
     entt::DefaultRegistry registry;
 
     ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0});
+    ASSERT_NO_THROW(registry.reserve(42));
     ASSERT_TRUE(registry.empty());
 
     ASSERT_EQ(registry.capacity(), entt::DefaultRegistry::size_type{0});

+ 2 - 0
test/entt/entity/sparse_set.cpp

@@ -4,6 +4,7 @@
 TEST(SparseSetNoType, Functionalities) {
     entt::SparseSet<unsigned int> set;
 
+    ASSERT_NO_THROW(set.reserve(42));
     ASSERT_TRUE(set.empty());
     ASSERT_EQ(set.size(), 0u);
     ASSERT_EQ(set.begin(), set.end());
@@ -79,6 +80,7 @@ TEST(SparseSetWithType, AggregatesMustWork) {
 TEST(SparseSetWithType, Functionalities) {
     entt::SparseSet<unsigned int, int> set;
 
+    ASSERT_NO_THROW(set.reserve(42));
     ASSERT_TRUE(set.empty());
     ASSERT_EQ(set.size(), 0u);
     ASSERT_EQ(set.begin(), set.end());