c++ - 从 c 数组创建 vector

标签 c++

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

相关文章:

c++ - 如何解决make mysql-connector-c++-1.1.7错误

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - CLucene 中的内存泄漏

c++ - 为什么我的删除按钮没有删除 QHBoxLayout 上的所有小部件

c++ - 将两个整数相除而不转换为 double

c++ - 查看对象是什么类

c++ - (C++) 在 Windows CMD 中显示阴影 block (↓、▒、░)

javascript - 使用 OAuth for C++ 的 Twitter API 文档

C++ cout 和 enum 表示

c++ - 如何将 gstreamer 1.0 视频元素添加到 qt5 应用程序