C++ 什么'&';代表“中的”;标准::向量<;字节>&;溪流&引用;

C++ 什么'&';代表“中的”;标准::向量<;字节>&;溪流&引用;,c++,syntax,stl,C++,Syntax,Stl,我知道 void foo(vector<int>& v) { ... } voidfoo(vector&v){…} 是通过引用传递向量,但是 std::vector<byte>& stream; std::向量和流; 流变量定义是什么?为什么会有“&”?这是对std::vector的引用。因为它是一个参考,所以允许您更改原始的向量,如本例所示: #include <iostream> #include <vector> c

我知道

void foo(vector<int>& v) { ... }
voidfoo(vector&v){…}
是通过引用传递向量,但是

std::vector<byte>& stream;
std::向量和流;

流变量定义是什么?为什么会有“&”?

这是对
std::vector
的引用。因为它是一个参考,所以允许您更改原始的
向量
,如本例所示:

#include <iostream>
#include <vector>

class Incrementer {
public:
    Incrementer(std::vector<int>& v) : vec(v) {}
    void increment() {
        for (auto& i : vec)
            ++i;
    }
private:
    std::vector<int>& vec;
};

int main() {
    std::vector<int> numbers { 1, 2, 3, 4 };
    Incrementer inc(numbers);
    for (auto i : numbers)
        std::cout << i << ' ';
    std::cout << '\n';

    inc.increment();

    for (auto i : numbers)
        std::cout << i << ' ';
    std::cout << '\n';
}

正如其他人所说,这两个都是参考文献。但是,第二个变量无效,因为没有引用的变量! 应该这样写:

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> stream1(5);
    stream1[0] = 10;
    std::vector<int>& stream2 = stream1; // stream2 and stream1 are two names for the same variable
    stream1[0] += 55;
    cout << "stream1: " << stream1[0] << endl;
    cout << "stream2: " << stream2[0];
    return 0;
}
#包括
#包括
int main()
{
std::矢量流1(5);
stream1[0]=10;
std::vector&stream2=stream1;//stream2和stream1是同一变量的两个名称
stream1[0]+=55;

难道这是一样的..它本身不应该是有效的。它是一个未初始化的引用。@Tomothy32它是一个成员变量的有效定义。@RobtheBlock,是的,它是类的成员,但为什么不只使用“std::vector stream;”?有什么原因吗?
#include <vector>
#include <iostream>

int main()
{
    std::vector<int> stream1(5);
    stream1[0] = 10;
    std::vector<int>& stream2 = stream1; // stream2 and stream1 are two names for the same variable
    stream1[0] += 55;
    cout << "stream1: " << stream1[0] << endl;
    cout << "stream2: " << stream2[0];
    return 0;
}