以下这段代码该怎么优化int main() { int v1=0, v2=0; std::cout << "请输入两个整数:" << std::endl; std::cout << "第一个整数:"; std::cin >> v1; std::cout << "第二个整数"; std::cin >> v2; if (v1 > v2) { int tmp = 0; tmp += v1; v1 = v2; v2 = tmp; } for (int i=v1;i <= v2;++v1) { std::cout << v1 <<std::endl; } return 0; }
时间: 2023-06-03 08:05:45 浏览: 62
可以将第二个整数的输入和v1、v2比较的逻辑拆分开来,避免不必要的变量赋值和比较。同时,在循环内部直接输出i。
代码如下:
int main() {
int v1, v2;
std::cout << "请输入两个整数:" << std::endl;
std::cout << "第一个整数:";
std::cin >> v1;
std::cout << "第二个整数:";
std::cin >> v2;
if (v1 > v2) {
int tmp = v1;
v1 = v2;
v2 = tmp;
}
for (int i = v1; i <= v2; i++) {
std::cout << i << std::endl;
}
return 0;
}
相关问题
C++:如何std::vector<std::vector<int>>中的元素都是唯一的
可以使用类似于去重的方法,对于vector<vector<int>>这种类型的嵌套容器,我们需要自定义比较函数,来判断两个vector<int>是否相等。然后,我们可以将每个vector<int>排序,这样就可以保证每个vector<int>中的元素都是唯一的。最后,再通过类似于去重的方法,去除重复的vector<int>。示例代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
bool isEqual(const std::vector<int>& v1, const std::vector<int>& v2) {
if (v1.size() != v2.size()) {
return false;
}
for (size_t i = 0; i < v1.size(); ++i) {
if (v1[i] != v2[i]) {
return false;
}
}
return true;
}
bool isUnique(const std::vector<std::vector<int>>& v) {
// 将每个vector<int>排序
std::vector<std::vector<int>> sorted_v = v;
for (auto& inner_v : sorted_v) {
std::sort(inner_v.begin(), inner_v.end());
}
// 去除重复的vector<int>
auto new_end = std::unique(sorted_v.begin(), sorted_v.end(), isEqual);
sorted_v.erase(new_end, sorted_v.end());
// 判断是否全部唯一
return sorted_v.size() == v.size();
}
int main() {
std::vector<std::vector<int>> v1{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
std::cout << std::boolalpha << isUnique(v1) << std::endl; // true
std::vector<std::vector<int>> v2{
{1, 2, 3},
{4, 5, 6},
{1, 2, 3}
};
std::cout << std::boolalpha << isUnique(v2) << std::endl; // false
return 0;
}
```
输出结果为:
```
true
false
```
其中,isUnique函数用于判断vector<vector<int>>中的元素是否都是唯一的。首先,将每个vector<int>排序,然后再使用类似于去重的方法,去除重复的vector<int>。如果去重后的vector<vector<int>>中的元素个数与原始的vector<vector<int>>中的元素个数相等,就说明每个vector<int>都是唯一的。
C++:将std::vector<std::vector<int>>中重复的元素仅保留一个
可以使用STL中的unique函数来去除重复的元素。但是对于vector<vector<int>>这种类型的嵌套容器,我们需要自定义比较函数,来判断两个vector<int>是否相等。示例代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
bool isEqual(const std::vector<int>& v1, const std::vector<int>& v2) {
if (v1.size() != v2.size()) {
return false;
}
for (size_t i = 0; i < v1.size(); ++i) {
if (v1[i] != v2[i]) {
return false;
}
}
return true;
}
int main() {
std::vector<std::vector<int>> v{
{1, 2, 3},
{4, 5, 6},
{1, 2, 3},
{7, 8, 9},
{1, 2, 3}
};
auto new_end = std::unique(v.begin(), v.end(), isEqual);
v.erase(new_end, v.end());
for (const auto& inner_v : v) {
for (const auto& element : inner_v) {
std::cout << element << " ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果为:
```
1 2 3
4 5 6
7 8 9
```
其中,isEqual函数用于比较两个vector<int>是否相等。unique函数会将相邻的相同元素去重,返回去重后的新的末尾迭代器。最后,通过调用vector的erase函数,将新的末尾迭代器之后的元素删除,从而达到去重的目的。