我定义的反向函数不是打印结果
Reverse function defined by me is not printing the result
在int main((函数中,如果我使用声明vector b未打印结果。如果我删除向量B,则打印了预期的结果。为什么矢量B的存在阻碍了反向功能的打印?
i擦除向量B,然后打印了预期的结果。矢量B的存在阻碍了反向函数的打印
#include <iostream>
#include <vector>
using namespace std;
int reverse(vector<int> a, int s, int e) {
while(s < e) {
int temp = a[s];
a[s] = a[e - 1];
a[e - 1] = temp;
s++;
e--;
}
for(int i = 0; i < a.size(); i++) {
cout << a[i] << " ";
}
}
int main() {
vector<int> a;
a.push_back(1);
a.push_back(3);
a.push_back(5);
a.push_back(7);
a.push_back(9);
vector<vector<int>> b;
b[0].push_back(0);
b[0].push_back(2);
b[1].push_back(0);
b[1].push_back(3);
reverse(a, 0, 5);
}
预期结果:9 7 5 3 1
没有错误消息,但是预期的结果未打印。
您的推b[0].push_back(0);
是"非法"。b
没有元素0。在此之后,由于访问范围而具有未定义的行为。
您可以通过创建包含2个默认构造的vector<int>
S
b
来修复它 vector<vector<int>> b(2);
或通过添加默认构造的 vector<int>
时:
vector<vector<int>> b;
b.emplace_back();
b.back().push_back(0);
b.back().push_back(2);
b.emplace_back();
b.back().push_back(0);
b.back().push_back(3);
或通过准备临时vector<int>
然后进入b
。
vector<vector<int>> b;
vector<int> tmp;
tmp.push_back(0);
tmp.push_back(2);
b.emplace_back(std::move(tmp));
tmp.clear();
tmp.push_back(0);
tmp.push_back(3);
b.emplace_back(std::move(tmp));
tmp.clear();
相关文章:
- C++使用 g++ 时,没有结果,没有打印
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- cout 打印不准确的结果,printf 打印准确的结果
- 读取一组用户输入,按升序排序,然后打印结果
- 无法打印正确的结果
- 对象指针打印结果以相反的顺序进行
- GetTempPathA 函数在打印结果后崩溃
- 我定义的反向函数不是打印结果
- 声明双重给它一个值0,但打印结果意外变化
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 在WINDBG中调用C 方法实例并打印结果
- infix/postfix/prefix程序.想要使用我的printresult()函数打印结果.需要帮助获得输出
- 计算文本文件中的单个字母并打印结果 - 错误的输出 C++
- 在C MBED中使用strstr,打印结果
- 没有语法错误,但没有打印结果
- 如果命令不只是打印结果,而是进入某种交互模式,如何处理来自C++的终端命令执行的输出?
- HTML词法分析器在c++中如何打印结果
- 迭代器遍历一对向量,并使用std::copy打印结果
- void() 问题 - 它不打印结果
- 如何将排序函数应用于字符串.find( ) 以按字母顺序打印结果