我读到在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 one是Undefined Behavior,您可以构造一个,但这样做被认为是hack)。