我读到在C++中使用原始指针是不好的。相反,我们应该使用auto_ptr。在下面的代码中,我将在foo()中创建的main()中填充一个 vector 。我是对的还是没有使用显式指针的更好的方法?

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void foo(vector<string> *v){

    (*v).push_back(" hru");
}

int main(){
    vector<string> v;
    v.push_back("hi");
    foo(&v);
    for(int i=0;i<v.size(); i++){
        cout << v[i];
    }

}

最佳答案

C++将引用用于您要执行的操作:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void foo(vector<string>& v){
    v.push_back(" hru");
}

int main(){
    vector<string> v;
    v.push_back("hi");
    foo(v);
    for(int i=0;i<v.size(); i++){
        cout << v[i];
    }
}

引用和指针是相似的,但有一个非常重要的区别:没有空引用(在C++中Constructing oneUndefined Behavior,您可以构造一个,但这样做被认为是hack)。

09-09 20:36
查看更多