【发布时间】:2017-09-28 17:34:35
【问题描述】:
我想将 std::vector 传递给函数,但我不想复制整个向量。我只想将地址传递给向量。所以我尝试使用一个指针,我发现我不能使用方括号来访问我想要的向量中的哪个元素。我怎么做?这给了我错误“
cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'"
#include <iostream>
#include <vector>
using namespace std;
void f(vector<int>* x);
int main()
{
vector<int>a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
f(&a);
return 0;
}
void f(vector<int>* x)
{
int i;
for(i=0;i<x->size();i++)
cout<<x[i];
}
【问题讨论】:
-
我想将 std::vector 传递给函数,但我不想复制整个向量然后你想使用引用,而不是指针。它使这个问题消失了。
-
您可以使用
x->at(i)。但正如@NathanOliver 所说,使用参考更好。 -
或“cout
-
x 是指向
vector<int>的指针。因此,x[i]给你一个vector<int>,而不仅仅是一个普通的int。您不能使用指针以与对象本身完全相同的方式访问某些内容。毕竟,这就是指针的含义。这不是同一个对象。它是一个指向对象的指针。 -
我得到一个完全不同的错误。