尝试从 c 数组的部分(5 个元素)生成 vector 。
const static int size = 10;
cout << "vector from C-array: " << endl;
int ia[size] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
vector<int> vi2(ia, ia + size-5);
但是当我尝试使用整个长度的 c 数组枚举 vector 项时,我得到了所有项,例如 vector 将被初始化为 vector<int> vi2(ia, ia + size-5);
.没有超出范围的异常或错误。
for(int i = 0; i < size; i++) {
cout << i << ":" << vi2[i] << " ";
}
在输出中:
0:1 1:2 2:3 3:4 4:5 5:6 6:7 7:8 8:9 9:10
为什么 vector 初始化使用第二个参数来描述指向数组末尾的指针,如果它不使用它?
最佳答案
您正在越界访问您的 vector 。这是未定义的行为。不需要抛出异常。
你不能超过 vi2.size()-1
。
for(int i = 0; i < vi2.size(); ++i)
{
std::cout << i << ":" << vi2[i] << " ";
}
关于c++ - 从 c 数组创建 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721281/