我正在使用一个频繁使用
以下是不同的操作:
4.
假设我不想在
std::vector
的程序。此外,有很多分配/释放操作,数量达到数十亿,我正在尽可能避免其中尽可能多的操作。
由于我对C++相对较新,因此在使用向量(例如添加元素时)时发生分配的情况下,我有一些问题。
我在Win7 64位机器上,程序是32位的,我正在使用当前版本的MinGW编译器。
我想知道,在以下情况下会发生什么,即如果向量被复制,作为引用传递,...
1.
std::vector<T> fillVector() {
std::vector<T> returnVector;
...
return returnVector;
}
std::vector<T> myVector = fillVector();
2.
std::vector<T>& fillVector() {
std::vector<T>* returnVector = new std::vector<T>;
...
return (*returnVector);
}
std::vector<T> myVector = fillVector();
3.
std::vector<T>* fillVector() {
std::vector<T>* returnVector = new std::vector<T>;
...
return returnVector;
}
std::vector<T>* myVector = fillVector();
以下是不同的操作:
4.
std::vector<T> myVector1;
... (myVector1 being filled)
std::vector<T> myVector = myVector1;
5.
std::vector<T>* myVector1 = new std::vector<T>;
... (myVector1 being filled)
std::vector<T> myVector = (*myVector1);
假设我不想在
myFunction
中更改参数/更改为myVector
,这样做不会影响程序的其余部分:
6.
void myFunction(std::vector<T> myParam) {
...
}
std::vector<T> myVector;
... (myVector being filled)
myFunction(myVector);
7.
void myFunction(std::vector<T>& myParam) {
...
}
std::vector<T> myVector;
... (myVector being filled)
myFunction(myVector);
如果我的理解是正确的,最快的选项(意思是传递引用而不是创建副本并传递它们)将是2/3、5和7。如果我错了,请纠正我!