C++ 向量元素计数

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

在C++中,使用向量头,如何找到元素的数量?

#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
    system("pause");
    return 0;
    primer(1000);
}

int primer(int max) {
    vector<int> a;
    a[1]=2;
    for (int i=2;i<=max;i++) {
        bool prime=true;
        for (int ii=1;ii<=#a;ii++) {
            if i/a[ii]==math.floor(i/a[ii]) {
                prime=false;
            }
        }
        if prime==true {
            a[#a+1]=i;
        }
    }
    for (i=1;i<=#a;i++) {
        cout << a[i]);
    }
}

代码最初是我写的 对于lua,这是我将其转换为C++的尝试。我希望能提供详细信息,例如,对坏线进行特定替换。我尝试用 a.size 替换 #a,但没有成功。

修订:

#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
    primer(5);
    system("pause");
    return 0;
}

int primer(int max){
    vector<int> a;
    a[1]=2;
    for (int i=2;i<=max;i++) {
        bool prime=true;
        for (int ii=0;ii<a.size();ii++) {
            if (i/a[ii]==floor(i/a[ii])) {
                prime=false;
            }
        }
        if (prime==true) {
            a.push_back(i);
        }
    }
    for (int iii=0;iii<=a.size();iii++) {
        cout << a[iii] << endl;
    }
}

不运行就崩溃了。这是什么原因?

c++ translation primes
5个回答
9
投票

a.size()
.

我建议使用某种参考材料,例如http://cplusplus.com/reference/stl/vector/


5
投票

回答您当前的问题:

a.size();  // use size as a function

但是您的代码还有其他一些问题:

vector<int> a;
a[1]=2;

通常需要预先设置

a
的大小,因为C++必须为其分配空间。不过,您可以使用
push_back()
,这将根据需要逐渐添加空间。

此外,C++ 数组从 0 开始计数:

for (int ii=1;ii<=#a;ii++) {

这个应该是

ii = 0

由于数组从 0 开始,因此它们以

size() - 1
结束,而不是
size()


2
投票
for( int ii = 0; ii < a.size(); ++ii )

C 和 C++ 数组索引从 0 开始,以 size-1 结束,因此您需要比较小于,而不是小于或等于。 向量遵循相同的规则。


1
投票

另一个需要指出的明显问题:

int main()
{
    system("pause");
    return 0;
    primer(1000);
}

你的函数永远不会被调用。当 main 返回时,您的应用程序将退出。


1
投票
 a[#a+1]=i;

改为使用 size() 变为:

 a[ a.size() + 1 ] = i;

这在语法上是正确的,但肯定是错误的。应该是:

 a.push_back(i);

阅读Oli引用的API。

© www.soinside.com 2019 - 2024. All rights reserved.