【发布时间】:2010-12-17 22:52:04
【问题描述】:
在c++程序中,当我想读取一个大小为2697806的向量时,总是得到Segmentation fault错误。 我已经尝试了所有可能的阅读方式:
void AUROC(vector<float> v) {
...
for(std::vector<int>::size_type i = 0; i != v.size(); i++)
if (v[i]>0) ++pos; else ++neg;
for(std::vector<long>::size_type i = 0; i != v.size(); i++)
if (v[i]>0) ++pos; else ++neg;
for (vector<float>::iterator i=v.begin(); i!=v.end(); ++i)
if (*i>0) ++pos; else ++neg;
for (long i=0;i<=v.size();i++)
if (v[i]>0) ++pos; else ++neg;
for(int i=0;i<=v.size();i++)
if (v[i]>0) ++pos; else ++neg;
}
...
int main(void) {
vector<float> scores;
// put data in scores;
AUROC(scores);
}
这个问题永远不会发生在尺寸小得多的向量上。
感谢您的帮助。 最好的, 佩加
【问题讨论】:
-
请显示您在
v中添加内容的代码。 -
"在一个 c 程序中,当我想读取一个向量时"太棒了,C 现在有向量了! =D
-
vector
分数; score.push_back((1==1 ) ? s : (-s)); -
我将 score 的结果发送到另一个函数 void AUROC(vector
v) 以这种方式:AUROC(scores); -
不要通过值传递,而是通过引用或指针传递