打印矢量数组中的所有元素
Printing all elements in array of Vector
int n=1000000;
vector <int> divisors[1000001];
void solve()
{
for(int i=1; i<=n; i++)
for(int j=i; j<=n; j+=i)
divisors[j].push_back(i);
}
现在,我想打印除数的所有元素。我该怎么做?
您需要两个循环来首先遍历向量数组,然后遍历每个向量。多年来,C++已经改进了很多,所以现在有简单的方法可以做到这一点:
#include <vector>
#include <iostream>
constexpr int n=1000000;
std::vector<int> divisors[n+1];
void solve()
{
for(int i=1; i<=n; i++)
for(int j=i; j<=n; j+=i)
divisors[j].push_back(i);
}
int main()
{
solve();
for (auto &i : divisors)
for (auto j : i)
std::cout << "array index:" << &i - &divisors[0] << " Entry " << j << std::endl;
}
顺便说一句,这是非常慢的,因为向量被扩展会产生大量的堆抖动。加快速度的一种方法是制作第二个整数数组,并使用相同的循环结构增加每个元素中的值。然后遍历数组中的所有向量并将它们调整为所需的大小。我将把这个作为OP的练习。
你需要像这样遍历向量的大小,
for(int i = 0; i < vector_name.size(); i++){
cout << vector_name.at(i) << " ";
}
它也可以工作
vector<int>::iterator it;
for (int i=1; i<=1000000; i++)
{
for(it=divisors[i].begin();it!=divisors[i].end(); it++)cout<<*it<<" "; cout<<endl;}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀