gpt4 book ai didi

c++ - C++创建对相同数据进行操作的子 vector

转载 作者:行者123 更新时间:2023-12-01 12:38:36 25 4
gpt4 key购买 nike

您好,我有一个 vector :

vector<int> myCuteVector {1,2,3,4};

现在,我想以一种方式创建子 vector ,使其包含myCuteVector中的2个第一个元素,以便在修改子 vector 元素之后,myCuteVector的元素也将更改。

伪代码:

vector<int> myCuteVector {1,2,3,4};
vector<int> myCuteSubVector = myCuteVector[0:2];
myCuteSubVector[0] = 5;
printf("%d", myCuteVector[0]) //would print also 5;


有可能实现吗?

最佳答案

您可以使用 std::reference_wrapper 做到这一点。看起来像:

int main()
{
std::vector<int> myCuteVector {1,2,3,4};
std::vector<std::reference_wrapper<int>> myCuteSubVector{myCuteVector.begin(), myCuteVector.begin() + 2};
myCuteSubVector[0].get() = 5; // use get() to get a reference
printf("%d", myCuteVector[0]); //will print 5;
}

或者您可以直接使用迭代器,例如
int main()
{
std::vector<int> myCuteVector {1,2,3,4};
std::vector<std::vector<int>::iterator> myCuteSubVector{myCuteVector.begin(), myCuteVector.begin() + 1};
// it is important to note that in the constructor above we are building a list of
// iterators, not using the range constructor like the first example
*myCuteSubVector[0] = 5; // use * to get a reference
printf("%d", myCuteVector[0]); //will print 5;
}

关于c++ - C++创建对相同数据进行操作的子 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60740376/

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