Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.
Join the Innovate on Windows Vista Program
The release of the new Windows Vista operating system offers a unique opportunity to create innovative applications that help you respond to your customer's needs and increase your revenue. Millions of customers will soon be looking for compatible software and solutions that fully showcase the powerful new features of Windows Vista. Click here
Take a Break at the Windows Vista Innovation Cafi
This interactive cafi lets you play around with a bunch of Windows Vista applications--right from your browser. Try out everything from online shopping in 3D to interactive experiences that you can drop right into your Office docs. See for yourself! Click here
MSDN Windows Vista Developer Center
Windows Vista offers substantial new capabilities in security, performance, reliability, and manageability. It was built from the ground up with a focus on secure development, an enhanced user experience, and optimization around hardware advancements. Learn why Windows Vista is the ideal platform for your applications. Click here
Windows Vista Forums
Ask questions, share information, or exchange ideas with others, including experts from around the globe, with these forums. Click here
Windows Vista Security
Understand the impact that the security changes in Windows Vista may have on existing solutions and the opportunities that exist to build a new generation of secure solutions for Windows Click here
[Updated] Permutations in C++
Rating: Wong Shao Voon - 12/01/2006 The technique of finding permutations also provides source code for the recursive implementation. Also, learn how to use the STL template function next_permutation().
Floyd's All Pairs Shortest Path Algorithm
Rating: L. Shyamal - 08/11/2003 This algorithm determines a matrix of the shortest distances between every pair of points. (The article was updated.)
Simple Binary Tree Class
Rating: none DigitalConvict - 09/09/2002 [Update] Binary Search Trees are useful for finding items in a list that changes infrequently. Add and Remove operations are typically expensive since Binary Search Trees require that a tree be balanced. This article illustrates another Binary Tree class.
Implementing the MD5 Algorithm
Rating: Gary McNickle - 08/14/2002 Take advantage of a secure message-digest algorithm in your applications. Learn the means to easily integrate MD5 into your existing C++ applications using this cross-platform library.
Balanced Binary Tree
Rating: Per Nilsson - 01/02/2002 This article give a brief, non-academic explanation of what binary trees are about. It also provide source and demo of a generic tree class. Functionality to balance the tree is also described/provided.
Checksum Algorithms
Computing a MS-CHAPv2 Client Response (not yet reviewed)
Rating: none Eugene Prigorodov - 03/06/2006 Learn about a RFC2759-compliant implementation of the MS-CHAPv2 response calculation algorithm.
RSA MD5 Message Digest
Rating: N. Stone - 10/30/2002 [Update] C++ implementation of the RSA MD5 message digest algorithm. One minor typo has been corrected.
CRC32: Generating a checksum for a file
Rating: Brian Friesen - 01/02/2002 This article describes what a CRC is, how to generate them, what they can be used for, and lastly source code showing how it's done.
Combinations
[Updated] Combinations in C++
Rating: Wong Shao Voon - 12/01/2006 Learn about a simple algorithm to find combinations systematically using C++.
Finding Permutations—Easier and Faster
Rating: srini_gct - 07/09/2004 Learn about the technique of finding permutations in a simple and fast manner. It also provides the source code for the same.
Compression/Decompression
zlib: Add Industrial Strength Compression to Your C/C++ Apps
Rating: Victor Volkman - 04/10/2006 The zlib compression library enables developers to integrate lossless compression into their application suites with ease. The benefits are saved time, space, and therefore money.
A Simple Yet Highly Efficient Compressing Technique
Rating: Roland Cooper-Bitsch - 03/23/2004 Redundancy is very high in any text material. Simple ordering can lead to
compression ratios up to 20:1 in directory listings.
Two Classes for Doing Gzip in Memory
Rating: Gao Dasheng - 07/09/2003 Do Gzip compression and decompression in memory as well as allocate and deallocate memory automatically. (The demo project was updated.)
Data Compression Methods
Rating: Hannibal Lecturer - 02/28/2003 Learn about fundamental data compression algorithms including RLE and Grayscale matrix compression.
Optimizing Tip on Adaptive Arithmetic Coding
Rating: none Alexey V. Shanin - 01/02/2002 Describes an optimization point found in the most commonly used adaptive Witten-Neal-Cleary implementation
Factorials
Method of Handling Factorials of Any Size
Rating: Hai Yi - 01/02/2002 Method uses linked list to capture each digit of factorial result thereby not limiting you to C/C++ types
General
Properties in C++
Rating: Mohamed Shuaib - 12/28/2006 Learn how to simulate C# properties in C++.
[Updated] A Deterministic Method of Determining a Document's Modified State
Rating: Jeffrey Walton - 11/29/2006 Determine when a document has been modified. In the particular case of word processors, most tend to have a "dirty" flag that is set when a user types. This article demonstrates a smarter "dirty" flag that uses probabilistic methods.
Doxygen: A Breath of Fresh Air for API Documentation
Rating: Victor Volkman - 09/01/2006 The Doxygen documentation system addresses the age-old dilemma of how to keep documentation consistent with actual use cases by extracting it directly from the source code.
Running State Machines-Based Win32/WinCE Programs
Rating: JeromeWiz - 06/13/2006 Learn how to run state machine application framework-based Win32/WinCE programs using window message hooking technology.
TIP: Half Size Triangular Matrix
Rating: baxelrod - 01/18/2006 Learn about a technique that allows you to use half the data storage when you have a symmetric distance matrix or other similar triangular matrix.
Anti-Aliased Image Transformation (Aaform)
Rating: msg555 - 12/19/2005 Given an image and a quadralateral, Aaform will fit the image onto the quadraleteral passed using geometry.
Clone Smart Pointer (clone_ptr)
Rating: Axter - 09/01/2005 Learn about a non-sharing smart pointer class that can be used with STL containers such as std::map, vector, list, set, and deque. The smart pointer has an assignment operator and greater than operator that call the target object's operator.
[Updated] Delaunay Triangles
Rating: Sjaak Priester - 07/19/2005 Learn about an algorithm to calculate this intriguing and important data structure in
computer graphics.
Convert Numbers to Various Display Formats
Rating: Ajay Vijayvargiya - 02/11/2005 Learn about a set of several algorithms to convert a given number to various formats. This will add enhancement to your application.
Selecting a Geometrical Object
Rating: Lea Hayes - 07/09/2004 Learn about a method of selecting a geometrical object which is described by its vertices. This article might be of use if you are creating 2D or 3D shape related software.
Message Digests and Digital Fingerprints
Rating: James Vanns - 06/15/2004 Learn about an OO implementation of the MD5 algorithm in C++. It does not simply copy Ron Rivest's C code into a class. It was
written to help provide a better understanding of MD5 and how C++ and its STL may be used to implement it. The code is not optimised.
[Updated] A Demo of an AVL Tree
Rating: Polo.G.Z - 05/25/2004 Learn about using an AVL Tree, including inserting, removing, and searching a node.
[Updated] Geographic Distance and Azimuth Calculations
Rating: Andy McGovern - 04/28/2004 This article presents the basics of how to do geographic calculation for a spherical and ellipsoid Earth model, and provides sample code that implements solutions to several interesting geographic calculations.
Functorized Undo/Redo
Rating: none Alexandre Komyak - 03/04/2004 Discover an implemtation of the Undo/Redo algorithm that marries the algorithm with the functor.
[Updated] Introduction to Hash Tables
Rating: Per Nilsson - 08/30/2004 Read a brief, non-academic, explanation of what hash tables are and why they are important.
Easy-to-Use Hash Table
Rating: Rex Schilasky - 10/09/2003 See how to use a hash table. The example uses a small hash table that works with std::strings as key and any data as member. (The article, demo project, and source code were updated.)
CLinkedList Doubly Linked List Class
Rating: Ian Duff - 02/20/2002 Doubly Linked List routines providing the most full-blown functionality that any coder should ever need.
War of the Worlds: Endianness
Rating: Marius Bancila - 07/26/2005 Learn about the differences between little- and big-endian representations.
Use Traits Classes for Information About Types
Rating: Scott Meyers - 05/26/2005 The STL is primarily made up of templates for containers, iterators, and algorithms, but it also has a few utility templates. Learn more in this excerpt from "Effective C++, Third Edition: 55 Specific Ways to Improve Your Programs and Designs."
C++ Math and Fun
Rating: Zeeshan Amjad - 08/19/2004 Number theory is a branch of math that can be very attractive.
[Updated] MFC Template Class CLongInt
Rating: Thomas Holte - 04/05/2004 The template class template class CLongInt supports long integer arithmetic. The template parameter bits specifies the size of a CLongInt in bits.
A Suite of Discrete Probability Classes
Rating: Joe Nellis - 02/20/2003 Five discrete probability distributions most common for use in computer simulations, gaming, artificial intelligence decision making, and environment modeling. The classes differ from other routine mathematical attempts at probability computation with a few tricks that extend the range of allowable inputs. A comparison with Monte Carlo techniques to probability computation is given.
Portability of the STL remove_if Algorithm (or The Lack of)
Rating: none Zeeshan Amjad - 01/08/2004 The standard template library [JOS99] defines the remove_if algorithm. However, the standards don't define the implementation. Be careful to avoid portability issues if you use this algorithm.
Searching
Sample of a Binary Tree Search
Rating: none Jose Garcia Garcia - 12/03/2002 Search a string in a big array of string pointers using a simple binary tree search method.
Sorting
Discover the Network Search Capabilities of the Boost Graph Library
Rating: Victor Volkman - 01/11/2006 Once you commit your data structures to a graph representation with the Boost Graph Library, the possibilities of sorting, searching, and connecting networks are limitless.
SortKeyToMultiValueContainer C++ Container Template
Rating: none Luca Missora - 03/09/2004 A simple and practical approach to manage a set of data in memory: insertion, sorting, searching by key and scanning of the result set.
The Quick Sort
Rating: zipcn046 - 02/12/2003 A technique for sorting referred to as a partition-sort. Having a time complexity of NlogN, this is one of the fastest sorting algorithms available.
Insertion Sort Simplified
Rating: zipcn046 - 02/05/2003 Insertion sort, having the time-complexity of O(N^2), is one of the efficient sorting algorithm.
String Algorithms
URI Encoding and Decoding
Rating: jinq0123 - 11/02/2006 Learn about fast and portable URI encoding and decoding functions that use std::string as the argument and return type, and do the buffer conversion, including '\0'.
Flex Your Lexical Analysis Muscles
Rating: Victor Volkman - 10/09/2006 The Flex lexical analyzer generator enables you to accurately act on and react to incoming character data streams in a way that is both predictable and debuggable.
Managed Extensions: Parsing CSV Files with Regular Expressions
Rating: Tom Archer - MSFT - 09/10/2004 Tom Archer illustrates how to parse comma-delimited text—when the data contains quotes, commas, and blanks—and return the data in a managed array.
[Updated] Receiving & Converting Numeric and String Data via Sockets
Rating: Tom Archer - MSFT - 04/08/2004 Many times a remote system will send a numeric value indicating the length of the data to be received in subsequent receive commands. However, when you start sending and receiving numeric data via sockets, you have to be aware of conversion issues in terms of what type of machine is on the other end of the connection.