stl 0.1.8 copy "stl: ^0.1.8" to clipboard
stl: ^0.1.8 copied to clipboard

A performance-oriented implementation of STL patterns (Vector, List, algorithms) for Dart.

example/stl_example.dart

import 'package:stl/stl.dart';

void main() {
  print('========================================');
  print('    📦 STL Vector & Deque - Showcase');
  print('========================================\n');

  // ========================================
  //              VECTOR SHOWCASE
  // ========================================

  // 1. Initialization (const and final)
  print('--- 1. Initialization & toString() ---');
  const v1 = Vector<int>([1, 2, 3]);
  final v2 = Vector<int>([1, 2, 3]);
  final v3 = Vector<int>([1, 2, 100]);

  print('v1 (const): $v1');
  print('v2 (final): $v2');
  print('v3 (final): $v3\n');

  // 2. Deep Equality
  print('--- 2. Deep Equality (operator ==) ---');
  print('Is v1 == v2? ${v1 == v2}  <-- True value-based equality!');
  print('Is v1 == v3? ${v1 == v3}\n');

  // 3. Lexicographical Comparison
  print('--- 3. Lexicographical Comparison ---');
  if (v3 > v1) {
    print('$v3 is strictly greater than $v1');
  }
  print('Is v1 <= v2? ${v1 <= v2}\n');

  // 4. Modifiers (push_back, pop_back, insert, clear)
  print('--- 4. Modifiers ---');
  final dynamicVec = Vector<String>(['Apple', 'Banana']);
  print('Initial Vector: $dynamicVec');

  dynamicVec.push_back('Cherry');
  print('After push_back: $dynamicVec');

  dynamicVec.insert(1, 'Blueberry');
  print('After insert at index 1: $dynamicVec');

  dynamicVec.pop_back();
  print('After pop_back: $dynamicVec\n');

  // 5. Memory Safety & Bounds Checking
  print('--- 5. Memory Safety & Strict Bounds ---');
  try {
    print('Attempting to access dynamicVec[100]...');
    final _ = dynamicVec[100]; // This will throw!
  } catch (e) {
    print('Caught expected memory safety guard: $e\n');
  }

  // 6. Iterable Support
  print('--- 6. Dart Iterable Support ---');
  final numbers = Vector<int>([10, 15, 20, 25, 30]);
  print('Iterating through $numbers in a for-in loop:');
  for (final n in numbers) {
    print(' -> $n');
  }

  // 7. Concatenation
  print('--- 7. Concatenation ---');
  final v4 = Vector<int>([1, 2, 3]);
  final v5 = Vector<int>([4, 5, 6]);
  final v6 = v4 + v5;
  print('v4: $v4');
  print('v5: $v5');
  print('v4 + v5: $v6\n');

  // 8. Multiplication
  print('--- 8. Multiplication ---');
  final v7 = Vector<int>([1, 2, 3]);
  final v8 = v7 * 3;
  print('v7: $v7');
  print('v7 * 3: $v8\n');

  // 9. Subtraction
  print('--- 9. Subtraction ---');
  final v9 = Vector<int>([1, 2, 3]);
  final v10 = Vector<int>([1, 2, 3]);
  final v11 = v9 - v10;
  print('v9: $v9');
  print('v10: $v10');
  print('v9 - v10: $v11\n');

  // 10. ~ operator
  print('--- 10. ~ operator ---');
  final v12 = Vector<int>([1, 2, 3]);
  final v13 = ~v12;
  print('v12: $v12');
  print('~v12: $v13\n');


  // ========================================
  //              DEQUE SHOWCASE
  // ========================================
  print('========================================');
  print('              DEQUE SHOWCASE');
  print('========================================\n');

  // Initialization
  print('--- 11. Deque Initialization ---');
  final deque = Deque<int>();
  print('Created empty Deque. Is empty? ${deque.isEmpty}');
  
  // Modifiers 
  print('\n--- 12. Deque Modifiers (insertFront / insertLast) ---');
  deque.insertLast(10);
  deque.insertFront(5);
  deque.insertLast(20);
  deque.insertFront(1);
  print('Inserted 1, 5, 10, 20.');
  print('Front element: ${deque.getFront()}'); 
  print('Rear element: ${deque.getRear()}');

  // Deletion
  print('\n--- 13. Deque Deletion (deleteFront / deleteLast) ---');
  print('Removed from front: ${deque.deleteFront()}');
  print('Removed from rear: ${deque.deleteLast()}');
  print('New Front element: ${deque.getFront()}');
  print('New Rear element: ${deque.getRear()}');

  // From Iterable
  print('\n--- 14. Deque from Iterable ---');
  final stringDeque = Deque<String>.from(['Apple', 'Banana', 'Cherry']);
  print('Front: ${stringDeque.getFront()}, Rear: ${stringDeque.getRear()}');

  print('\n========================================');
  print('  🎉 Showcase Complete!');
  print('========================================\n');
}
2
likes
0
points
805
downloads

Publisher

verified publishertekinu.ai

Weekly Downloads

A performance-oriented implementation of STL patterns (Vector, List, algorithms) for Dart.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on stl