向量索引在C 中不会包裹吗?什么是解决方法
Do vector indices not wrap around in C++? What is the workaround?
初始化向量时:
std::vector <int> someVec;
我打电话:
std::cout << someVec[-1];
有任意数量的元素,始终返回0。
有什么办法可以解决这个问题吗?在C 中无法执行此操作正在弄乱我的"排序"功能。是否有任何方法可以以不同的方式初始化上述向量,以返回向量中的最后一个元素,而不是0似乎是默认值。看来任何索引在向量范围之外的任何索引都将导致0。没有包装使我感到困惑。
访问边界外访问向量的行为(例如在索引[-1]
)是未定义的。
无论如何[...]返回向量中的最后一个元素
这样:someVec.back()
如果使用索引[-1]
时需要返回最后一个元素的容器,则向量不是用于您的目的的容器。标准库没有这样的容器。
无法在C 中执行此操作正在弄乱我的"排序"函数。
理想的方法可能是修复"排序"功能以不需要访问[-1]
。但是,标准库带有一个排序功能,因此您甚至不需要自己实施一个功能。
有其他方法可以解决这个问题吗?
要访问std::vector
中的最后一个元素,请使用std::back
:
std::vector<int> vec(10,1);
std::cout << vec.back(); // prints 1
请注意,默认初始化向量
后std::vector<int> vec2;
通过operator[]
访问任何索引是未定义的行为,因为向量的大小为 0
,没有任何元素可以访问。
相关文章:
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 有什么方法可以将元素添加到列表中,如图所示?
- 有什么方法可以将具有不同模板参数的模板类实例放入向量中?
- 通常使用什么方法来检测时间情况?
- 有什么方法可以包装自动类型扣除的助推"tee"流的构造?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- C++ - 有什么方法可以将输入插入缓冲区/停止 cin.忽略需要输入?
- 有什么方法可以在标头中定义和声明 extern 对象吗?
- 终端进程终止,退出代码为:1有什么方法可以修复它吗
- 有什么方法可以从不同函数的变量中检索值吗?c++
- 有什么方法可以检测我的类的对象是否在堆栈上创建
- 当矢量改变容量时,有什么方法可以更新指针/参考值
- 计算机使用什么方法添加无符号整数
- 有什么方法可以延长C++中临时对象的生存期吗
- 有什么方法可以识别可用的内存地址吗?
- 有什么方法可以在 c++ 中组织"cycling"(循环)数字?
- 有什么方法可以"factor out"公共字段以节省空间?