gpt4 book ai didi

c++ - 从 c 数组创建 vector

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:21 29 4
gpt4 key购买 nike

尝试从 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com