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

C++;矢量元素计数 在C++中,使用向量头,如何找到元素的数量?,c++,translation,primes,C++,Translation,Primes,#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 m

#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]);
    }
}
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int底漆(int最大值);
int main()
{
系统(“暂停”);
返回0;
底漆(1000);
}
内部底漆(内部最大值){
载体a;
a[1]=2;

为了(int i=2;i回答您的直接问题:

a.size();  // use size as a function
但您的代码还有其他一些问题:

vector<int> a;
a[1]=2;
这应该是

ii = 0
由于数组从0开始,它们以
size()-1
结束,而不是
size()

a.size()


我建议使用某种参考资料,例如另一个需要指出的明显问题:

int main()
{
    system("pause");
    return 0;
    primer(1000);
}
永远不会调用你的函数。当main返回时,你的应用程序将退出。

for(int ii=0;iifor( int ii = 0; ii < a.size(); ++ii )

C和C++数组索引从零开始,在SIZE-1结束,因此需要比较小于、不小于或等于。vector遵循相同的规则。

 a[#a+1]=i;
更改为使用大小()变为:

这在语法上是正确的,但保证是错误的。它应该是:

 a.push_back(i);

读取Oli引用的API。

你也会有范围问题。要正确使用向量,你必须要么给它一个大小,要么使用代码> PurthBuffe<代码> @ @ TimeCoo:没有冒犯,但试图学习C++中的编程(编辑)在SO上发帖会浪费你和我们的时间。这和你刚刚发帖的99%相似的问题是一样的或是一个替代品。@Tomalak:这一个正试图使用另一个答案中建议的
std::vector
。是的,它们应该链接起来,不,这不是重复。@PigBen:你在开玩笑吗?32行代码代码片段几乎是一样的!而另一个根本不是关于向量的。奇怪。他应该扩展他的原始问题,因为他只是基于他得到的响应。他应该在该线程上解决关于这些响应的查询。哦!.size(),不是属性。这很有意义。谢谢:)众所周知,cplusplus.com充满了错误。Apache stdlib引用更为优越。@TimeCode:没有“属性”之类的东西在C++@John Dibling中,没错。那是我犯的错误。XD别担心。一旦我看到这样的错误,我可以很快修复它。知道这一点很好!但不得不说……我无法控制自己。哇,我完全错过了
main()
。我非常关注
primer()的所有问题
。你只发现了一个错误,没有修复它导致的溢出:(更不用说@TimeCoder在调用函数之前就从
main
返回了!@John已经捕捉到了那个错误。@chris:刚才,我还以为你在叫我“Ninefinger”。毫无意义!事实上,cplusplus.com是众所周知的错误百出的。Apache stdlib参考更为优越。我必须承认我直接使用了标准文档。
 a[#a+1]=i;
 a[ a.size() + 1 ] = i;
 a.push_back(i);