在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;
}
}
不运行就崩溃了。这是什么原因?
a.size()
.
我建议使用某种参考材料,例如http://cplusplus.com/reference/stl/vector/。
回答您当前的问题:
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()
。
for( int ii = 0; ii < a.size(); ++ii )
C 和 C++ 数组索引从 0 开始,以 size-1 结束,因此您需要比较小于,而不是小于或等于。 向量遵循相同的规则。
另一个需要指出的明显问题:
int main()
{
system("pause");
return 0;
primer(1000);
}
你的函数永远不会被调用。当 main 返回时,您的应用程序将退出。
a[#a+1]=i;
改为使用 size() 变为:
a[ a.size() + 1 ] = i;
这在语法上是正确的,但肯定是错误的。应该是:
a.push_back(i);
阅读Oli引用的API。