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