相关疑难解决方法(0)

push_back vs emplace_back

我有点困惑有关之间的差异push_backemplace_back.

void emplace_back(Type&& _Val);
void push_back(const Type& _Val);
void push_back(Type&& _Val);
Run Code Online (Sandbox Code Playgroud)

因为有一个push_back超载采用右值参考我不太明白目的是emplace_back什么?

c++ stl visual-studio-2010 move-semantics c++11

684
推荐指数
7
解决办法
29万
查看次数

为什么我会使用push_back而不是emplace_back?

C++ 11向量具有新功能emplace_back.与push_back依赖于编译器优化以避免副本的情况不同,emplace_back使用完美转发将参数直接发送到构造函数以就地创建对象.在我看来,emplace_back一切都push_back可以做到,但有些时候它会做得更好(但从来没有更糟).

我有什么理由使用push_back

c++ std c++11

215
推荐指数
4
解决办法
5万
查看次数

如何以毫秒为单位获取当前时间?

我是C++的新手,我对它的库知之甚少.我需要对不同的排序算法进行时间分析,我需要以毫秒为单位获取当前时间.有没有办法做到这一点?

c++ algorithm performance time stl

9
推荐指数
1
解决办法
3万
查看次数

c ++ vector emplace_back更快?

如果我有课

class foo {
 public:
  foo() { // spend some time and do something. }
 private:
   // some data here
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个foo的向量,我想把这个向量放到另一个向量中

vector<foo> input; // assume it has 5 elements
vector<foo> output;
Run Code Online (Sandbox Code Playgroud)

这两条线是否有任何性能差异?

output.push_back(input[0])
output.emplace_back(input[0])
Run Code Online (Sandbox Code Playgroud)

c++ vector

5
推荐指数
1
解决办法
5752
查看次数

vs2015上的stl列表性能不佳,同时删除包含迭代器到列表中自身位置的节点

我只是存储一个节点列表,每个节点都包含一个指向它在列表中的位置的迭代器.然后我对插入和删除std列表和提升列表的节点进行基准测试.

包括

#include <iostream>
#include <memory>
#include <list>
#include <chrono>    
#include "boost/container/list.hpp"
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"

#define ONE_BILLION             1000000000
#define ONE_HUNDRED_MILLION     100000000
#define TEN_MILLION             10000000
#define ONE_MILLION             1000000
#define ONE_HUNDRED_THOUSAND    100000
#define TEN_THOUSAND            10000
Run Code Online (Sandbox Code Playgroud)

帮助函数打印插入或删除的平均持续时间

void print_duration(std::ostream &out, const std::string& str, const std::chrono::high_resolution_clock::duration &d)
{
    out << str << ": ";

    if (d < std::chrono::microseconds(10))
        out << std::chrono::duration_cast<std::chrono::duration<float, std::nano>>(d).count() << " nano s";
    else if (d < std::chrono::milliseconds(10))
        out << std::chrono::duration_cast<std::chrono::duration<float, std::micro>>(d).count() << " micro s";
    else if (d < …
Run Code Online (Sandbox Code Playgroud)

c++ performance boost stl visual-studio-2015

3
推荐指数
1
解决办法
131
查看次数