矢量下标超出范围;比较矢量元素
Vector Subscript out of Range; Comparing Elements of Vectors
我目前正在开发一个寻找素数的程序,我知道有一些不太复杂的方法可以找到素数,但我正在尝试比较向量中的元素(not_prime_numbers&number bank(数字从1-100)),当找到一个素数值时,它会被放入最终的素数向量中。
我使用循环来比较向量中的元素。当我要求程序显示矢量not_prime_numbers时,这不是问题,也不是数字库,但是当我要求它显示素数矢量时,我得到的误差矢量下标超出了范围。为什么我要求显示的素数中的向量元素超出范围,但使用相同的循环方法来显示向量的元素not_prime_numbers&number_bank工作。我如何比较这两个向量以将元素放入第三个向量(素数),这是个问题吗?
#include "pch.h"
#include <iostream>
#include<vector>
int main()
{
float i = 1.0;
unsigned int n = 0;
std::vector<float>not_prime_numbers;
std::vector<float>number_bank;
std::vector<float>prime_numbers;
while (i <= 100.0)
{
for (float j = 1.0;j<(i);++j)
{
float p = i / j;
if (abs(floor(p)) == p&&j!=1.0)
{
not_prime_numbers.push_back(i);
break;
}
}
++i
}
for (float k = 1.0; k <= 100.0; ++k)
{
number_bank.push_back(k);
}
for (unsigned int m = 0; m <= number_bank.size(); ++m)
{
while (n <= not_prime_numbers.size())
{
if (not_prime_numbers[n] == number_bank[m])
{
break;
}
if (n == m)
{
prime_numbers.push_back(number_bank[m]);
}
if (not_prime_numbers[n] != number_bank[m])
{
++n;
}
}
}
std::cout << "All prime numbers between 0 and 100 are as follows:n";
for (unsigned int j = 0; j <= prime_numbers.size(); ++j)
{
std::cout << prime_numbers[j] << "n";
}
}
这不是家庭作业,只是个人练习。如有任何帮助,我们将不胜感激。
在中
while (n <= not_prime_numbers.size()) { if (not_prime_numbers[n] == number_bank[m])
如果在最后一个元素之后,测试必须是n < not_prime_numbers.size()
打印结果时出现相同错误:
for (unsigned int j = 0; j <= prime_numbers.size(); ++j) { std::cout << prime_numbers[j] << "n"; }
必须是
for (unsigned int j = 0; j < prime_numbers.size(); ++j)
{
std::cout << prime_numbers[j] << "n";
}
如果valgrind在您的主机上可用,请使用它来查找此类错误和更多
相关文章:
- C++ 如何比较n个排序的整数向量以找到互元素?
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 如何在比较时更改集合元素的值(在 c++ 中)?
- 比较文本文件的元素
- 比较文本文件的元素
- 比较它们之间的元素并获取公共值的键
- 如何比较C++中向量的元素?
- 比较向量中的元素时所花费的时间呈指数级增长
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- 用字符串 c++ 比较对向量的元素
- 如何通过比较彼此的成员从QStringList中删除元素
- 如何比较链表的元素?
- 比较 C++ 中的两个数组,并根据元素的匹配或不匹配返回值
- 提升堆元素句柄比较和 MSVC 迭代器调试工具
- 将字符串中的元素与 C++ 中的长度为 1 的字符串进行比较
- 如何为映射和priority_queue编写比较器,其中元素是二维数组
- 将向量元素与字符串元素进行比较,而不初始化向量
- 比较元素,而不将它们存储在vector、数组、列表等中
- std::<classtype>set.find(element) 是否使用类中的 == 运算符来比较元素?