c++ qt vectorc溢出
时间: 2023-11-22 09:50:28 浏览: 90
C++缓冲区溢出实验
为了避免C++/Qt中的vector溢出,可以采取以下措施:
1.使用at()函数而不是[]运算符来访问vector元素,因为at()函数会检查索引是否越界,如果越界则会抛出out_of_range异常。
```c++
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3};
try {
int val = vec.at(3); // 访问越界元素,抛出out_of_range异常
} catch (const out_of_range& e) {
cerr << "Out of range error: " << e.what() << endl;
}
return 0;
}
```
2.使用resize()函数来调整vector的大小,以确保不会越界。
```c++
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3};
vec.resize(5); // 调整vector大小为5
vec[4] = 4; // 正确访问vector元素
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
3.使用迭代器来访问vector元素,因为迭代器会自动检查是否越界。
```c++
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3};
for (auto it = vec.begin(); it != vec.end(); it++) {
cout << *it << " ";
}
cout << endl;
return 0;
}
```
阅读全文