矢量访问上的程序隔离故障
Program seg faults on vector access
我是一个c++新手,在OS X Yosemite上学习c++。
我在源文件中声明了一个像这样的向量。
vector <int> v(3);
代码:#include <iostream>
#include <vector>
using namespace std;
void printVector (vector <int> v) {
for (int i = 0; i < v.size() ; i++)
cout << v[i] << endl;
}
int main (int argc, char ** argv) {
vector<int> v(3);
cout << "Initialise vectors..." << endl;
v[0] = 10;
v[1] = 11;
v[2] = 12;
printVector(v);
v.push_back(7);
cout << "push back (7)" << endl;
printVector(v);
return 0;
}
程序工作。
然后我在这里引用了这个网页,并按照它的方式像这样声明向量。
vector <int> v;
已编译(使用g++),但执行时程序分段错误11。
网站有问题吗?
你可以这样访问这些元素:
v[0] = 10;
v[1] = 11;
v[2] = 12;
这要求vector
至少有三个元素。如果你像这样声明:
vector<int> v(3);
它有三个元素,很好。如果你像这样声明:
vector<int> v;
则没有元素,因此上述访问无效。如果你想创建一个空的vector
然后添加元素到它,使用push_back
:
v.push_back(10);
v.push_back(11);
v.push_back(12);
当您声明vector<int> a
时,它的大小为0,因此访问向量的元素将产生错误。在这种情况下,您必须使用push_back
来添加元素:
v.push_back(10); // instead of v[0] = 10;
您也可以使用vector::at
代替[]运算符来执行容器边界检查。如果你越过它们,它会抛出out_range_exception
相关文章:
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- C++多线程程序:变量定义为类成员的隔离错误
- 对程序故障进行分段
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 程序接收了信号sigsegv,在代码块中调试时的细分故障
- lambda回调中Android Cocos2D-X应用程序上的SEG故障
- G :内部编译器错误:分割故障(程序CC1PLUS) - 我在哪里开始
- 当使用e时没有空格时,奇怪的程序故障
- 复制CORBA ::任何包含字符串的corba程序SEG故障
- 将程序的故障与模板Main联系起来
- 当程序遇到故障时,如何在信号处理函数中写入日志和上传日志到MYSQL
- SIGSEGV我的程序出现故障
- 声明一个(未使用的)整数,导致整个程序出现故障
- 对我的 c++ 程序进行故障排除
- 想知道我为什么会有隔离故障
- 不知道出了什么问题 - 两次程序隔离错误
- 为什么这个程序有隔离故障
- 矢量访问上的程序隔离故障
- 奇怪的隔离故障错误
- 与工厂设计尝试隔离故障