我的问题是在下面的代码中发表评论。
@android:id/list
答案 0 :(得分:4)
你可以
通过const
参考:
void printVec(const std::vector<int>& vec) {
for (const auto& value : vec)
..
}
使用迭代器:
void printVec(td::vector<int>* vec) {
for (auto it = vec->begin(); it != vec->end(); ++it)
..
}
使用at
(绑定支票的性能成本):
vec->at(i);
直接调用operator[]
:
vec->operator[](i);
答案 1 :(得分:0)
通过引用传递:
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] << " ";
}
}
使用基于范围的循环(C ++ 11)也是更好的选择:
void printVec(std::vector<int> & myVec) {
// How to do such looping not to dereference pointer
for (auto i : myVec) {
std::cout << i << " ";
}
}
答案 2 :(得分:0)
您可以将指针转换为引用并从那里继续:
void printVec(std::vector<int> *myVec) {
std::vector<int>& vec = *myVec;
// How to do such looping not to dereference pointer
for (size_t i = 0; i < vec->size(); i++) {
std::cout << vec[i] << " ";
}
}
答案 3 :(得分:-1)
如果我理解我认为你试图将它传递给一系列整数,那么这样的东西可能会起作用
#include <iostream>
#include <vector>
void printVec(int* i, int n)
{
for(int j = 0; j < n; j++)
{
std::cout << i[j] << std::endl;
}
}
int main()
{
std::vector<int> a;
a.push_back(5);
a.push_back(4);
a.push_back(3);
a.push_back(2);
a.push_back(1);
a.push_back(0);
printVec(&a[0], a.size());
return 0;
}