相关疑难解决方法(0)

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

C++返回对局部变量的引用

如果必须返回i,以下代码(func1())是否正确?我记得在某处读到返回对局部变量的引用时存在问题.它与func2()有什么不同?

int& func1()
{
    int i;
    i = 1;
    return i;
}

int* func2()
{
    int* p;
    p = new int;
    *p = 1;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

c++

102
推荐指数
2
解决办法
10万
查看次数

在c ++性能问题中使用getter返回映射

我有一个类有3-4个数据类型的成员,std::map<string, vector<string>>用于缓存数据.它的实例创建一次,数据填入服务调用的所有映射中.我有用于访问这些地图的getter函数.(这里也有一些线程锁定逻辑)

这些getter函数被调用了很多次,我很担心性能,因为地图对象被复制了很多次.

class A {
  private:
    map<string, vector<string>> m1;
    map<string, vector<string>> m2;
    map<string, vector<string>> m3;

  public:
    map<string, vector<string>> getm1() { return m1; }
    map<string, vector<string>> getm2() { return m2; } 
    map<string, vector<string>> getm3() { return m3; }
}

class B {
   B() { }
   static A a;

   map<string, vector<string>> getm1() { return a.m1; }
   map<string, vector<string>> getm2() { return a.m2; } 
   map<string, vector<string>> getm3() { return a.m3; } 
} 
Run Code Online (Sandbox Code Playgroud)

这些getter函数有多次从类调用B.掌握了cpp的中间知识,我知道getter会按值返回整个地图.但是,这将是更好的参考或使用共享指针到地图等存储构件变量传递它m1,m2,m3 …

c++ stdmap std rvo

2
推荐指数
1
解决办法
549
查看次数

标签 统计

c++ ×3

c++11 ×1

rvalue-reference ×1

rvo ×1

std ×1

stdmap ×1