-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathbasic_example.cpp
More file actions
50 lines (42 loc) · 1.49 KB
/
Copy pathbasic_example.cpp
File metadata and controls
50 lines (42 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// basic_example.cpp - 循环缓冲区基本用法演示
#include "ring_buffer.h"
#include <iostream>
int main() {
// 创建一个容量为 16 的循环缓冲区(实际可用 15)
RingBuffer<int, 16> buffer;
std::cout << "Ring Buffer Demo\n";
std::cout << "Capacity: " << buffer.capacity() << "\n\n";
// 测试:填充和读取
std::cout << "=== Pushing 10 elements ===\n";
for (int i = 0; i < 10; ++i) {
if (buffer.push(i)) {
std::cout << "Pushed: " << i << ", size: " << buffer.size() << '\n';
}
}
std::cout << "\n=== Popping 5 elements ===\n";
for (int i = 0; i < 5; ++i) {
int value;
if (buffer.pop(value)) {
std::cout << "Popped: " << value << ", size: " << buffer.size() << '\n';
}
}
std::cout << "\n=== Pushing 8 more elements ===\n";
for (int i = 10; i < 18; ++i) {
if (buffer.push(i)) {
std::cout << "Pushed: " << i << ", size: " << buffer.size() << '\n';
} else {
std::cout << "Failed to push: " << i << " (buffer full)\n";
}
}
std::cout << "\n=== Remaining contents ===\n";
while (!buffer.empty()) {
int value;
buffer.pop(value);
std::cout << value << ' ';
}
std::cout << "\n";
std::cout << "\nFinal size: " << buffer.size() << '\n';
std::cout << "Empty: " << (buffer.empty() ? "yes" : "no") << '\n';
std::cout << "Full: " << (buffer.full() ? "yes" : "no") << '\n';
return 0;
}