小编Isu*_*ake的帖子

C ++ std :: vector插入两个元素的替代算法失败

在我的项目中,我需要将两个元素插入两个索引中。我正在实现一种替代实现,而不是向量插入,因为两个插入调用两次将向量元素移位,并且我可以一次移位来完成相同的操作。但是,替代方案要慢得多。对此行为的解释可能是什么?

#include <vector>
#include <chrono>
#include <iostream>

void insert2(std::vector<int>& items, size_t first, size_t last, int item = -1) {
    // assert(last < items.size() + 2);
    // assert(first < last);
    // assert(0 <= first);
    // Creating two temporary objects
    // items.reserve(std::max(items.capacity(), items.size() + 2));
    items.emplace_back(); items.emplace_back();

    // Moving elements from the back to last
    for(auto p = items.end() - 1, q = items.begin() + last; p != q; --p) {
        // *p = std::move(*(p - 2));
        *p = *(p - 2); …
Run Code Online (Sandbox Code Playgroud)

c++ performance memory-management stl stdvector

6
推荐指数
1
解决办法
117
查看次数

标签 统计

c++ ×1

memory-management ×1

performance ×1

stdvector ×1

stl ×1