//#include<iostream> //#include<vector> //using namespace std; // //int main() //{ // // 窗口坐标 x, y // vector<int> xn; // vector<int> yn; // // // 鼠标点击坐标 // vector<int> x; // vector<int> y; // // // 记录窗口顺序 // vector<int> s(10); // 使用 vector 代替动态数组 // // int win = -1; // int m = 0, n = 0, a = 0, b = 0, c = 0, d = 0, temp = 0; // cin >> n >> m; // // // 记录窗口信息 // for (int i = 0; i < n; i++) { // cin >> a >> b >> c >> d; // xn.push_back(a); // yn.push_back(b); // xn.push_back(c); // yn.push_back(d); // s[i] = i + 1; // } // // // 记录鼠标 // for (int i = 0; i < m; i++) { // cin >> a >> b; // x.push_back(a); // y.push_back(b); // } // // // 判断置顶窗口 // for (int i = 0; i < m; i++) { // // 遍历窗口位置 // for (int j = 0; j < n * 2; j += 2) { // // 找到顺序在最上面的窗口号 // if (xn[j] <= x[i] && x[i] <= xn[j + 1] && yn[j] <= y[i] && y[i] <= yn[j + 1]) { // if (j == 0) // win = s[j]; // else { // if (win == -1 || s[win - 1] < s[j - 1]) { // win = s[j - 1]; // } // } // } // } // // // 如果没找到 // if (win == -1) { // cout << "IGNORED" << endl; // continue; // } // // cout << win << endl; // // // 调整窗口顺序 // if (temp == win || i == 0) { // for (int k = 0; k < n; k++) { // if (s[k] > win) // s[k]--; // } // s[win] = n-1; // } // temp = win; // win = -1; // // } // // return 0; //}
时间: 2023-09-21 11:06:36 浏览: 209
这段代码实现了一个简单的窗口管理器。它接受输入来描述窗口和鼠标点击的坐标,并根据鼠标点击的位置确定需要置顶的窗口,并输出置顶窗口的编号。
该程序的实现逻辑如下:
1. 首先,从输入中读取 n 和 m,分别表示窗口数量和鼠标点击数量。
2. 然后,使用循环读取每个窗口的坐标信息,并将它们存储在 `xn` 和 `yn` 向量中,同时初始化窗口顺序向量 `s`。
3. 接下来,使用循环读取每个鼠标点击的坐标,并将它们存储在 `x` 和 `y` 向量中。
4. 针对每个鼠标点击的坐标,使用嵌套循环遍历窗口位置,找到包含该坐标的最上层窗口。
5. 如果找到了置顶窗口,则输出窗口编号并进行窗口顺序调整;否则,输出 "IGNORED"。
6. 在窗口顺序调整时,通过修改 `s` 向量来更新窗口顺序,将被置顶的窗口放在最上面,并递减其后面的窗口编号。
7. 最后,返回 0 表示程序正常结束。
请问有什么问题我可以帮助您解答吗?
相关问题
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <map> #include <thread> #include "List.h" #include "Node.h" using namespace std; int main(void) { auto* head = new Node<int>(10); //auto *list = new List<int>(head); List<int> list(head); //list->Display(); return 0; }
这段代码包含了 List 类和 Node 类的头文件,并且定义了一个 main 函数。在 main 函数中,它首先创建了一个 Node 对象 head,数据值为 10。然后,它使用 head 对象创建了一个 List 对象 list。最后,它调用了 List 类的成员函数 Display 输出链表中的元素。
需要注意的是,由于 List 类已经包含了头节点指针 _head 和链表长度 _size,因此没有必要再使用指针变量 list 来引用 List 对象。因此,可以直接使用 List<int> list(head) 来创建对象。另外,注释掉的 list->Display() 可以直接通过 list.Display() 来调用,因为 Display 函数是一个公有成员函数。
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 排序
您的代码漏掉了大括号,请在sort语句后面加上大括号。另外,您需要加上输出结果的语句。完整的代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end()); // 排序
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
阅读全文