有两个向量。您需要遍历它们的所有元素并执行相同的操作,首先对一个向量的元素进行操作,然后对第二个向量的元素进行操作。
std::vector<int> mas1 = {0,1,2,3};
std::vector<int> mas2 = {4,5,6,7,8,9};
for (auto num : mas1) { do_smth (); }
for (auto num : mas2) { do_smth (); }
是否可以在一个循环中执行相同的操作,但不创建共享向量?
有两个向量。您需要遍历它们的所有元素并执行相同的操作,首先对一个向量的元素进行操作,然后对第二个向量的元素进行操作。
std::vector<int> mas1 = {0,1,2,3};
std::vector<int> mas2 = {4,5,6,7,8,9};
for (auto num : mas1) { do_smth (); }
for (auto num : mas2) { do_smth (); }
是否可以在一个循环中执行相同的操作,但不创建共享向量?
为了避免重复
do_smth或循环内容,您可以迭代集合中的视图(甚至合并范围),这不需要动态内存分配,与创建单个向量不同:或者直接迭代,即使没有视图:
std::views::join- 将一组数组组合成一个很长的虚拟数组。问题是它不能是链接数组(这是禁止的),也不能是实际数组的数组(需要复制),但它可以是虚拟数组的数组 - 视图:可以迭代两个向量而不创建公共向量。
我们使用一个 for 循环同时迭代向量 mas1 和 mas2 的迭代器。