相关疑难解决方法(0)

为什么我不能制作参考文献?

当我这样做:

std::vector<int> hello;
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是,当我把它作为引用的向量时:

std::vector<int &> hello;
Run Code Online (Sandbox Code Playgroud)

我得到了可怕的错误

错误C2528:'指针':指向引用的指针是非法的

我想把一堆结构的引用放到一个向量中,这样我就不必插入指针了.为什么矢量会对此发脾气?我唯一的选择是使用指针向量吗?

c++ stl reference vector container-data-type

328
推荐指数
7
解决办法
16万
查看次数

为什么非const引用不能绑定到临时对象?

为什么不允许对一个临时对象进行非const引用,哪个函数getx()返回?显然,这是C++标准禁止的,但我对这种限制的目的感兴趣,而不是对标准的引用.

struct X
{
    X& ref() { return *this; }
};

X getx() { return X();}

void g(X & x) {}    

int f()
{
    const X& x = getx(); // OK
    X& x = getx(); // error
    X& x = getx().ref(); // OK
    g(getx()); //error
    g(getx().ref()); //OK
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 很明显,对象的生命周期不是原因,因为C++标准不禁止对对象的持续引用.
  2. 很明显,上面的示例中的临时对象不是常量,因为允许调用非常量函数.例如,ref()可以修改临时对象.
  3. 此外,ref()允许您欺骗编译器并获取此临时对象的链接,这解决了我们的问题.

此外:

他们说"为const引用分配一个临时对象可以延长这个对象的生命周期","但是对于非const引用却没有任何说法".我的其他问题.以下赋值是否延长了临时对象的生命周期?

X& x = getx().ref(); // OK
Run Code Online (Sandbox Code Playgroud)

c++ const reference temporary c++-faq

221
推荐指数
6
解决办法
9万
查看次数

C++ - 指向对象的向量的向量性能,对象的性能

在这种情况下,问题场景是游戏,因此所有资源在开始时分配,然后迭代一个级别.

存储在向量中的对象是复杂类的实例,当然在加载时将它们实际复制到向量中是耗时的,但是关注度低.

但是如果我主要担心的是在运行时对类对象进行迭代的速度,那么我是否更好地将类对象本身存储在向量中,而不是像传统推荐的那样只指向类对象?

我不担心这个例子中的内存管理,只是迭代的速度.

c++ iteration class vector object

6
推荐指数
2
解决办法
3704
查看次数