小编MrW*_*yne的帖子

何时复制矢量,何时传递参考?

我正在使用一个充分利用它的程序std::vector.还有很多分配/解除分配,数十亿分配,我试图避免尽可能多的分配/解除分配.由于我对C++比较陌生,所以我在使用向量时会有一些关于分配的问题(例如,在向其添加元素时).我在Win7 64位机器上,程序是32位,我正在使用当前版本的MinGW编译器.

我想知道,在下列情况下会发生什么,即如果复制了矢量,作为参考传递,...

1.

std::vector<T> fillVector() {
    std::vector<T> returnVector;
    ...
    return returnVector;
}

std::vector<T> myVector = fillVector();
Run Code Online (Sandbox Code Playgroud)

2.

 std::vector<T>& fillVector() {
    std::vector<T>* returnVector = new std::vector<T>;
    ...
    return (*returnVector);
}

std::vector<T> myVector = fillVector();
Run Code Online (Sandbox Code Playgroud)

3.

std::vector<T>* fillVector() {
    std::vector<T>* returnVector = new std::vector<T>;
    ...
    return returnVector;
}

std::vector<T>* myVector = fillVector();
Run Code Online (Sandbox Code Playgroud)

以下是不同的操作:

4.

std::vector<T> myVector1;
... (myVector1 being filled)
std::vector<T> myVector = myVector1;
Run Code Online (Sandbox Code Playgroud)

5.

std::vector<T>* myVector1 = new std::vector<T>;
... (myVector1 being filled)
std::vector<T> myVector = (*myVector1);
Run Code Online (Sandbox Code Playgroud)

假设我不想改变 …

c++ stl stdvector

7
推荐指数
2
解决办法
3322
查看次数

标签 统计

c++ ×1

stdvector ×1

stl ×1