为什么这个循环总是返回 0 作为第一个元素?

问题描述 投票:0回答:1

我正在尝试创建一个函数来获取间隙内的第一对素数。

我首先创建一个

vector
并将其大小设置为“m”和“n”之间的差值。

但是,我一直遇到这个问题。向量的第一个元素始终是

0
,而它应该是(在本示例中)
3
(以及最后一个数字
7
)。

//declare variables
int gap = g;// 0 for now
int lowLimit = m;//3
int highLimit = n;//7

//vector with all the numbers
vector<int>nums(n - m);

//fill nums with all he numbers between n & m inclusive
int numsToSearch = n - m;
for (int i = m; i <= n; ++i) {
    nums.push_back(i);
    std::cout << "first for: " << nums.at(i) << '\n';
}
c++ logic stdvector
1个回答
0
投票

您最初使用

vector
(4) 个零构建
n-m
,然后将
m-n+1
(5) 个更多的数字推入零之后的
vector

您需要:

  • 使用
    vector::operator[]
    代替
    vector::push_back()
    :
vector<int> nums(n - m + 1);

for (int i = m, j = 0; i <= n; ++i, ++j) {
    nums[j] = i;
}
  • 摆脱构造函数输入值并使用
    vector::reserve()
    代替:
vector<int> nums;
nums.reserve(n - m + 1);

for (int i = m; i <= n; ++i) {
    nums.push_back(i);
}
© www.soinside.com 2019 - 2024. All rights reserved.