如何遍历作为指针传递的向量

Dmy*_*oka 1 c++ pointers

我的问题是在下面的代码注释中。

void printVec(std::vector<int> *myVec) {

 // How to do such looping not to dereference pointer
 for (int i = 0; i < myVec->size(); i++) {
   std::cout << myVec->[i] << " ";
 }
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 5

你可以

通过const引用传递参数:

void printVec(const std::vector<int>& vec) {
  for (const auto& value : vec)
    ..
}
Run Code Online (Sandbox Code Playgroud)

使用迭代器:

void printVec(td::vector<int>* vec) {
  for (auto it = vec->begin(); it != vec->end(); ++it)
    ..
}
Run Code Online (Sandbox Code Playgroud)

使用at(绑定检查的性能成本):

vec->at(i);
Run Code Online (Sandbox Code Playgroud)

operator[]直接调用:

vec->operator[](i);
Run Code Online (Sandbox Code Playgroud)