Passing vectors by reference

前端 未结 3 644
野性不改
野性不改 2021-02-01 05:24

If I have a vector of objects in one class which I want to change in another, I would try and pass all the information by reference.

What exactly do I need to pass by re

相关标签:
3条回答
  • 2021-02-01 05:38

    You cannot have a vector of references. Vector elements must be copyable and assignable, which references are not. So only the first option is actually an option, but it's spelled std::vector<Object> &.

    Note that v[1] already returns a reference to the second element, so you can happily pass individual elements by reference.

    It is possible to have a vector of reference-wrappers a la std::ref, but if you don't know what that is, you probably shouldn't be using it at this point.

    0 讨论(0)
  • 2021-02-01 05:41

    vector&<object> is a syntax error. vector<object&> is invalid, because a vector's value type must be assignable. vector&<object&> blah is a syntax error.

    A reference to a vector is vector<T>&.

    0 讨论(0)
  • 2021-02-01 05:48

    Another option is to pass around iterators instead of containers. This is the approach the standard library takes in <algorithm>. They are slightly more verbose at the calling site, but they have the advantage that they work for parts of a collection as well as complete collections and decouples the algorithm from the container.

    Lastly, of course, it's worth while checking you know your algorithms as there may already be one that does what you want.

    0 讨论(0)
提交回复
热议问题