相关疑难解决方法(0)

有关插入和安装的VC++请求调查

我正在调查在以下成员函数中执行的特殊成员函数的执行次数vector:

insert
emplace
push_back
emplace_back
Run Code Online (Sandbox Code Playgroud)

在各种运行时间条件下.我的目的是发表一篇文章,将这些成员函数相互比较,并在std :: lib:libstdc ++,libc ++和vc ++的每个c ++ 11实现上进行比较,并提供关于何时最好的建议.使用每个成员函数(当可能有多个选项时).我有关于libc ++和libstdc ++ - 4.8的数据,但我缺乏关于vc ++的数据.

我正在寻找vc ++的答案,其中包括vc ++版本号(2010年,2012年,2013年).我的目的是就何时应该优先考虑这些成员的时间提供建议,并通过实际经验进行调整.我将对每个vc ++版本的第一个响应进行投票.我的意图不是打击任何特定的平台.但是,如果我的结果鼓励任何现有平台在未来改进,那么那就是肉汁.

测试我希望看到的结果是:

#include <iostream>
#include <vector>

class X
{
    int i_;
    int* p_;

public:
    struct special
    {
        unsigned c;
        unsigned dt;
        unsigned cc;
        unsigned ca;
        unsigned mc;
        unsigned ma;
    };
    static special sp;

    X(int i, int* p)
        : i_(i)
        , p_(p)
    {
//         std::cout << "X(int i, int* p)\n";
        sp.c++;
    }

    ~X()
    {
//         std::cout << "~X()\n"; …
Run Code Online (Sandbox Code Playgroud)

visual-c++ c++11

8
推荐指数
2
解决办法
564
查看次数

资源管理 - 矢量和指针

我需要存储一系列类型的元素ThirdPartyElm,我正在使用std::vector(或者std::array如果我需要一个固定大小的序列).

我想知道如何初始化序列.第一个版本创建一个新元素,并且(如果我是对的)在元素插入序列时创建元素的副本:

for (int i = 0; i < N; i++)
{
   auto elm = ThirdPartyElm();
   // init elm..
   my_vector.push_back(elm);  // my_array[i] = elm;
}
Run Code Online (Sandbox Code Playgroud)

第二个版本存储一系列指针(或更好的智能指针与c ++ 11):

for (int i = 0; i < N; i++)
{
   std::unique_ptr<ThirdPartyElm> elm(new ThirdPartyElm());
   // init elm..
   my_vector.push_back(std::move(elm));  // my_array[i] = std::move(elm);
}
Run Code Online (Sandbox Code Playgroud)

哪个是最轻量级的版本?

请突出显示任何错误.

c++ pointers initialization vector c++11

4
推荐指数
1
解决办法
188
查看次数

标签 统计

c++11 ×2

c++ ×1

initialization ×1

pointers ×1

vector ×1

visual-c++ ×1