Phy*_*ser 6 c++ crash stl function vector
我是C++的新手,特别是STL.我正在尝试将向量作为参数传递给函数,但它会导致应用程序崩溃.我正在使用Code :: Blocks和MingW.这是一个简单的代码.
#include <iostream>
#include <vector>
using namespace std;
void foo(const vector<int> &v)
{
cout << v[0];
}
int main(){
vector<int> v;
v[0] = 25;
foo(v);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
它会崩溃,因为你写过矢量的末尾v[0]- 那是未定义的行为.如果你什么都不做,它的初始大小是0.(你随后也读过同样的内容,但在此之前所有的赌注都已经完成了).
你可能想做:
vector<int> v;
v.push_back(25);
foo(v);
Run Code Online (Sandbox Code Playgroud)
或者可能:
vector<int> v(1);
v.at(0) = 25;
foo(v);
Run Code Online (Sandbox Code Playgroud)
如果使用v.at(n)而不是[]运算符,则会抛出异常而不是未定义的行为.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |