小编cla*_*m37的帖子

C++ 11 /生成的构造函数

我一直在研究由其他人(离开公司)开始的C++项目.他编写了一段代码似乎工作得很好,但我无法理解.

以下是代码的简化版本:

有两个类:

class Algo_t {
protected :
    Matrix_t m_Matrix ;
public:
    Algo_t(Matrix_t && Matrix) {
        DoSomething();
    }
};

class Matrix_t {
protected :
    std::ifstream & m_iftsream ;
public:
    Matrix_t(std::ifstream && ifstream) {
        DoSomething();
    }
};
Run Code Online (Sandbox Code Playgroud)

主要:

主函数中有以下调用:

char * pMyFileName = agrv[1] ;
Algo_t MyAlgo(ifstream(pMyFileName));
Run Code Online (Sandbox Code Playgroud)

首先,我觉得很奇怪,因为不存在构造函数的代码编译没有任何错误Algo_t采取ifstream作为一个参数.我更惊讶地发现这段代码运行得很好.

构造函数是由编译器生成的还是由C++ 11引入的一些新特性(带有rvalue ...)?

c++ c++11

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

C++,实例化std :: vector时性能不佳

我有一个关于std :: vector实例化的问题.我比较了std :: vector的实例化和相同大小的数组的动态分配.我期待std :: vector的实例化会花费更长的时间但我的性能差异很大.

对于数组我有53 us对于std :: vector我有4338 us

我的代码:

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

int main() {
    unsigned int NbItem = 1000000 ;
    std::chrono::time_point<std::chrono::system_clock> start, middle ,end;
    start = std::chrono::system_clock::now() ;
    float * aMallocArea = (float *)calloc(sizeof(float)*NbItem,0) ;
    middle = std::chrono::system_clock::now() ;
    std::vector<float> aNewArea ;
    middle = std::chrono::system_clock::now() ;
    aNewArea.resize(NbItem) ;
    //float * aMallocArea2 = new float[NbItem];
    end = std::chrono::system_clock::now() ;
    std::chrono::duration<double> elapsed_middle = middle-start;
    std::chrono::duration<double> elapsed_end = end-middle;
    std::cout << "ElapsedTime CPU  = " …
Run Code Online (Sandbox Code Playgroud)

c++ arrays performance stl vector

0
推荐指数
1
解决办法
263
查看次数

标签 统计

c++ ×2

arrays ×1

c++11 ×1

performance ×1

stl ×1

vector ×1