gpt4 book ai didi

c++ - C++: vector 数组

转载 作者:行者123 更新时间:2023-12-02 09:56:43 25 4
gpt4 key购买 nike

我有一个通过引用获取5个 vector 的 Action :
void ReadFromFile(string nomFitxer, vector<int> &n, vector<int> &s, vector<int> &o, vector<int> &e, vector<int> &a){
我在 Action 内部创建了一个 vector vector<int> ve[] = {n, s, o, e, a};数组,认为它们是相同的,但是它们当然不一样。因为阅读后我发现ve [0]的大小为5,n的大小为0。

如何从给定的 vector 中制作 vector 数组?

先感谢您

最佳答案

#include <vector>
#include <iostream>

using std::vector;

void foo(vector<int> & a, vector<int> & b) {
vector<int> vectors[] = {a, b};
std::cout << "vectors[0].size() = " << vectors[0].size() << std::endl;
vectors[0][0] = 42;
std::cout << "vectors[0][0] = " << vectors[0][0] << std::endl;
}

int main() {
vector<int> one = {1, 2, 3, 4};
vector<int> two = {11, 12, 13, 14};
std::cout << "one[0] = " << one[0] << std::endl;
foo(one, two);
std::cout << "one[0] = " << one[0] << std::endl;
}

这段代码创建了一个 vector 数组,这些 vector 由 复制构成,这些 vector 由作为函数参数传递的引用所引用的 vector 构成。

因此,对 vector 的修改不会逃避功能范围……并且您有复制的缺点。

由于您使用的是 vector<int> &(非常量引用),因此我假定您希望这些 vector 为“输出”参数。 array of references是不可能的,但是您可以使用 std::reference_wrapper 规避此限制:

#include <functional>

void bar(vector<int> & a, vector<int> & b) {
using vref = std::reference_wrapper<vector<int>>;
vref vectors[] = {a, b};
std::cout << "vectors[0].size() = " << vectors[0].get().size() << std::endl;
vectors[0].get()[0] = 42;
std::cout << "vectors[0][0] = " << vectors[0].get()[0] << std::endl;
}

// Now use bar instead of foo with the above main function!

关于c++ - C++: vector 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com