std::cin >>向量[i]不会让迭代器正常工作吗?
std::cin >> vector[i] won't let iterators work properly?
我一直在想为什么我的std::vector<int>
没有被排序,我已经意识到当使用std::cin >> myVector[i]
时,myVector.begin()
和myVector.end()
是相同的值(第一个索引)
看看我刚刚创建的示例代码。
#include <iostream>
#include <vector>
#include <algorithm>
int main ()
{
int N;
// take size
std::cin >> N;
std::vector<int> myVector;
myVector.reserve(N);
// take input
for (int i = 0; i < N; i++) {
// this messes up iterators?
std::cin >> myVector[i];
// this works
// int intput;
// std::cin >> input;
// myVector.push_back(input);
}
// iterators not working properly
std::cout << *(myVector.begin()) << std::endl; // outputs first index
std::cout << *(myVector.end()) << std::endl; // outputs first index!?
// sort
// std::sort(myVector.begin(), myVector.end());
return 0;
}
样本输入:
5
4
3
2
1
0
输出:
4
4
预期输出:
4
0
所以,我的问题是,std::cin >> myVector[i]
是否会扰乱迭代器?为什么push_back
和[]operators
不起作用?
感谢
reserve()
只是预先分配空间,这样后续的追加就不需要(那么多)重新分配——它不会调整向量的大小。要调整大小,您需要。。。resize()
.:)
std::vector<T>
分别跟踪其自身的大小(元素数量)和容量。查看reserve()
不会改变大小的最简单方法是在reserve()
之后的向量上调用size()
。你会看到向量仍然"相信"它的大小是0。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- C++程序已停止工作-求解常微分方程