- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在实现一个玩具调度程序,它读取进程规范(例如到达时间、总运行时间)的输入文件,然后根据随机 io/cpu 突发调度进程。
文件格式
Arrival time, total CPU time, CPU burst, IO Burst.
现在,当有两个进程到达时间相同时,调度程序必须首先调度文件中最先提到的进程。
我将文件中的条目保存在优先队列中。
struct EventComparator{
bool operator()(const Event* event1, const Event* event2){
return event1->getTimestamp() >= event2->getTimestamp();
}
};
priority_queue, EventComparator> eventQueue;
其中Event只是一个封装了流程参数的对象。
我的问题是,优先级队列不稳定。我所说的稳定是指过程的顺序被颠倒了。
假设输入文件有
60 200 5 20
60 20 10 10
40 100 10 40
0 200 40 90
如果我从优先级队列中弹出,我期待第 4 行、第 3 行、第 1 行,然后是第 2 行。但是我得到了 Line4、Line3、Line2、Line1。
我的问题是,如何才能获得稳定的优先级队列?
câu trả lời hay nhất
您的比较器不正确。 tài liệuvì std::priority_queue
声明它应该提供严格的弱排序(也就是说,它应该 event1->getTimestamp() > event2->getTimestamp()
,而不是>=
).
为了使其稳定,您可以将行号存储在 Sự kiện
中并比较它是否 event1->getTimestamp() == event2->getTimestamp()
.
Như thế này:
struct EventComparator {
bool operator()(const Event* event1, const Event* event2) {
if (event1->getTimestamp() != event2->getTimestamp()) {
return event1->getTimestamp() > event2->getTimestamp();
}
return event1->getLineNumber() > event2->getLineNumber();
}
};
关于C++有序(稳定)优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28836251/
Giống như câu hỏi này: mongodb truy vấn nhiều cặp bằng $in Tôi muốn tìm 10 tên đầy đủ đầu tiên bằng cách sử dụng (tên, họ) >= ('John', 'Smith'). sử dụng
Làm cách nào tôi có thể duy trì cách tôi thêm đối tượng vào NSDictionary? Tôi nhận thấy rằng các giá trị trong NSDictionary không theo một thứ tự cụ thể, nhưng trong trường hợp của tôi, tôi cần giữ nguyên thứ tự được thêm bằng setValue:forKey: ví dụ như một mảng
Hãy xem các toán tử SSE CMPORDPS - có thứ tự so sánh các đĩa đơn được đóng gói CMPUNORDPS - không có thứ tự so sánh các đĩa đơn được đóng gói có thứ tự và
Tôi đang sử dụng PowerMock để mô phỏng các phương thức tĩnh. Tôi cần xác minh thứ tự của các lệnh gọi phương thức tĩnh và không tĩnh. Điều này có thể được thực hiện bằng PowerMock không? CẬP NHẬT Tôi đang sử dụng tiện ích mở rộng powermockito để mô phỏng các phương thức tĩnh, vì vậy sử dụng pow
Ví dụ: làm cách nào để hợp nhất hai luồng số nguyên đã được sắp xếp? Tôi nghĩ điều này khá cơ bản, nhưng tôi chợt nhận ra nó không hề tầm thường chút nào. Cái bên dưới không phải là đệ quy đuôi, nó sẽ tràn chồng khi luồng lớn. def merge(as: Stream[Int], bs: St
Tôi đang cố gắng tìm/in phần kế thừa theo thứ tự của mỗi nút trong cây nhị phân, nhưng kết quả là trình biên dịch cung cấp cho tôi một lỗi phân tách. Đây là cấu trúc:- struct node { int x; struct node *str;
Tôi có một truy vấn giống như SELECT a, b, c, d FROM tab ORDER BY a ASC, b ASC và tập kết quả của tôi trông giống như +-----------------
Đầu tiên, tôi đã thử tìm kiếm chủ đề này nhưng không tìm thấy gì (dường như không tìm được từ khóa phù hợp), vì vậy vui lòng cho tôi biết nếu đây là bản sao. Tôi đã cố gắng lấy một số dấu thời gian từ cơ sở dữ liệu của mình và sắp xếp chúng theo khoảng thời gian. Ví dụ: tôi chạy một truy vấn như
Câu hỏi này đã có câu trả lời ở đây: Làm cách nào để lấy chỉ mục của trình lặp của std::vector? (9 câu trả lời) Đã đóng 6 năm trước. Tôi đã đặt hàng QVe
Tôi có thực thể sau và nếu tôi cố xóa Tác vụ khỏi Danh sách tác vụ thông qua phương thức RemoveTask thì tôi sẽ gặp ngoại lệ. @Entity lớp công khai TaskList mở rộng Generi
Vì vậy, tôi vẫn còn rất mới với lập trình C. Có 3 chuỗi có cùng độ dài. str1="abc", str2="def", str3="ghi". Đầu ra trong chuỗi mới sẽ tương tự như "adgbehcfi". #bao gồm
Tôi gặp vấn đề với truy vấn của mình, mất quá nhiều thời gian (hơn hai giây chỉ cho truy vấn đơn giản này). Thoạt nhìn, đây có vẻ là một vấn đề về lập chỉ mục, tất cả các trường đã tham gia đều được lập chỉ mục, nhưng tôi không thể tìm thấy bất kỳ điều gì khác mà tôi có thể cần lập chỉ mục để tăng tốc mọi thứ. Một khi tôi thêm những từ tôi cần
Tôi đang tìm cách triển khai Bản đồ lặp lại các cặp khóa-giá trị theo thứ tự chúng được thêm vào. Ví dụ: Map orderMap = // việc khởi tạo bị bỏ qua vì những lý do hiển nhiên :) o
Tôi đang tìm kiếm một hệ thống cơ sở dữ liệu có: Khóa phân cấp (đa chiều) Sắp xếp khóa cho từng thứ nguyên Vì vậy, nếu khóa của tôi giống như Ứng dụng > Người dùng > Mục, tôi có thể chạy truy vấn như: "Mục tiếp theo cho người dùng này là gì? ” hoặc “Ứng dụng này
Lớp sau sử dụng CRTP để cố gắng thêm các loại vào std::vector bằng bộ đếm Schwarz để đảm bảo thứ tự khởi tạo. Theo 3.6.2/2 thành viên h_ có khởi tạo không có thứ tự. Làm cách nào để thay đổi nó để đảm bảo nó được khởi tạo theo thứ tự? tôi hy vọng
Tôi đang triển khai bộ lập lịch đồ chơi để đọc tệp đầu vào có thông số kỹ thuật của quy trình (ví dụ: thời gian đến, tổng thời gian chạy) và sau đó lên lịch cho quy trình dựa trên các đợt IO/CPU ngẫu nhiên. Định dạng tệp Thời gian đến, tổng thời gian CPU, CP
Tôi hiện đang sử dụng thư viện yêu cầu python 2.7 và các tiêu đề được đặt hàng không được hỗ trợ. Tôi có thể đặt dữ liệu được sắp xếp (như từ điển được sắp xếp) để đăng và nhận, nhưng các tiêu đề hoàn toàn không được hỗ trợ. Ngay cả trong python 3
Tôi đang sử dụng ConcurrentHashMap từ google ổi (thông qua MapMaker), nhưng việc triển khai chưa được sắp xếp. Có ConcurrentSkipListMap trong google ổi,
Tôi có một ứng dụng cũ sử dụng ConcurrentHashMap. Bây giờ chúng ta biết rằng HasMap đồng thời không có thứ tự, nhưng cần đọc đối tượng được chèn ban đầu. Tôi đã sử dụng mã này trong sản xuất được một thời gian, vì vậy tôi đang tìm kiếm một giải pháp thay thế nhanh chóng cho
Gần đây, tôi bắt đầu phát triển một dự án mới bằng .NET Core 2.1 và tôi quyết định sử dụng các nguyên tắc SOLID và tạo ra một cấu trúc dự án đẹp mắt. Đây là một dự án API Web. Mọi thứ đều hoạt động tốt. Tôi sử dụng rất nhiều tính năng tiêm phụ thuộc (tiêm), chủ yếu là
Tôi là một lập trình viên xuất sắc, rất giỏi!