background preloader

C++ FAQ LITE

C++ FAQ LITE

C++ Reference [C++ Reference] Boost C++ Libraries - Мозилин фајерфокс (Mozilla Firefox) Stroustrup: C++ untitled Definition: Streams are a replacement for printf() and scanf(). Pros: With streams, you do not need to know the type of the object you are printing. You do not have problems with format strings not matching the argument list. (Though with gcc, you do not have that problem with printf either.) Cons: Streams make it difficult to do functionality like pread(). Decision: Do not use streams, except where required by a logging interface. There are various pros and cons to using streams, but in this case, as in many other cases, consistency trumps the debate. Extended Discussion There has been debate on this issue, so this explains the reasoning in greater depth. Proponents of streams have argued that streams are the obvious choice of the two, but the issue is not actually so clear. cout << this; // Prints the address cout << *this; // Prints the contents The compiler does not generate an error because << has been overloaded. And so on and so forth for any issue you might bring up.

GSL - GNU Scientific Library - GNU Project - Free Software Foundation (FSF) - Мозилин фајерфокс (Mozilla Firefox) Introduction The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite. The complete range of subject areas covered by the library includes, Unlike the licenses of proprietary numerical libraries the license of GSL does not restrict scientific cooperation. Downloading GSL The current stable version is GSL-2.5. GSL can be found in the gsl subdirectory on your nearest GNU mirror Main GNU ftp site: For other ways to obtain GSL, please read How to get GNU Software Installation instructions can be found in the included README and INSTALL files. Precompiled binary packages are included in most GNU/Linux distributions. Verifying GSL Signature Documentation Donate

Software optimization resources. C++ and assembly. Windows, Linu See also my blog Contents Optimization manuals This series of five manuals describes everything you need to know about optimizing code for x86 and x86-64 family microprocessors, including optimization advices for C++ and assembly language, details about the microarchitecture and instruction timings of most Intel, AMD and VIA processors, and details about different compilers and calling conventions. Operating systems covered: DOS, Windows, Linux, BSD, Mac OS X Intel based, 32 and 64 bits. Note that these manuals are not for beginners. 1. This is an optimization manual for advanced C++ programmers. 2. This is an optimization manual for advanced assembly language programmers and compiler makers. 3. This manual contains details about the internal working of various microprocessors from Intel, AMD and VIA. 4. 5. All five manuals Download all the above manuals together in one zip file. C++ vector class library File name: vectorclass.zip, size: 682404, last modified: 2017-Jul-27.Download.

Namespace visibility in C# Java has package scoping. It allows an element to be visible only within the same namespace. It's a wonderful thing. Here's how it works in Java: package com.pc-doctor.mynamespace; package class Foo { ... } The class Foo is only visibile within mynamespace. Even though I'm not a Java programmer, this immediately strikes me as extremely useful. There are two reasons to want namespace visibility to be enforced by your compiler: If you can make those classes invisible outside the namespace, it will make life a lot easier for clients of that namespace. The Microsoft Way Microsoft expects you to make the classes internal. However, you have to make a separate assembly for each namespace that you want to do this with. Frankly, that's painful enough that few people do it. The C++ Way C++ also lacks namespace visibility. This is an easy thing to do, but it doesn't do much in C#. The end result is that a lot of detail namespaces will be visible. Even with those problems, it's probably worth doing in C#.

High Performance Heterogeneous Container Download source - 21.37 KB Contents Introduction A heterogeneous container is a container that can store elements of different types. For strongly typed languages like C++, such kind of container isn't a natural or built-in feature. Many solutions exist though, to simulate this heterogeneous property, but they often involve memory space or runtime speed trade-offs. This article presents a fixed-size heterogeneous container, named tek::record, that tries to achieve the best possible performances in terms of both size and speed. Existing Solutions This chapter lists the most known and popular solutions to implement a heterogeneous container, and their main drawbacks. Classical Polymorphism In the classical polymorphism solution, the container holds pointers to a base class from which several classes are derived. Limitations: Virtual functions can't be inlined in this case Impossibility to directly use built-in types Loss of type identity and traits specific to the derived classes Tuple Typelist

Cours de C/C++ - Club des décideurs et professionnels en Informa Ce livre est un cours de programmation en C et C++. Il s'adresse aux personnes qui ont déjà quelques notions de programmation dans un langage quelconque. Les connaissances requises ne sont pas très élevées cependant : il n'est pas nécessaire d'avoir fait de grands programmes pour lire ce document. Il suffit d'avoir vu ce qu'est un programme et compris les grands principes de la programmation. Lire l'article. Article lu 35350 fois. Vous avez aimé ce tutoriel ? inPartager Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance.

Breaking Up The Monolith: Advanced C++ Design without Compromise a new book by Matthew Wilson Breaking Up The Monolith describes techniques for writing and working with C/C++ libraries effectively, efficiently and with minimal coupling. It illustrates how to write high-quality C++ software that does not need to sacrifice on important software quality characteristics such as robustness, performance, expressiveness, flexibility, modularity, portability, and discoverability & transparency. The principles of C++ software engineering espoused in this book are: Software quality is important, and compromise should be, and can be, minimized. The concepts, patterns, principles and techniques described in Breaking Up The Monolith have enabled the development of: FastFormat, the most robust, most flexible, and fastest C++ formatting library Pantheios, the fastest, flexible, and only 100% type-safe C++ logging library VOLE, a library for driving COM/OLE automation servers from C++ with a natural, 100% type-safe, and efficient syntax.

Cours de C/C++ Christian Casteyde Copyright © 2003 Christian Casteyde Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Permission vous est donnée de copier, distribuer et modifier ce document selon les termes de la licence GNU pour les documentations libres, version 1.1 ou toute autre version ultérieure publiée par la Free Software Foundation. Une copie de cette licence est incluse dans l'annexe intitulée "GNU Free Documentation License".

Pages de codes de MultiByteToWideChar() CP_ACP/CP_OEMCP MultiByteToWideChar() maps a character string to a wide-character string. The declaration of this application programming interface (API) is as follows: int MultiByteToWideChar(uCodePage, dwFlags, lpMultiByteStr, cchMultiByte, lpWideCharStr, cchWideChar) UINT uCodePage; /* codepage */ DWORD dwFlags; /* character-type options */ LPCSTR lpMultiByteStr; /* address of string to map */ int cchMultiByte; /* number of characters in string */ LPWSTR lpWideCharStr; /* address of wide-character buffer */ int cchWideChar; /* size of wide-character buffer */ The first parameter, uCodePage, specifies the codepage to be used when performing the conversion. CP_ACP ANSI codepage CP_OEMCP OEM (original equipment manufacturer) codepage CP_ACP instructs the API to use the currently set default Windows ANSI codepage. If Win32 ANSI APIs are used to get filenames from a Windows NT system, use CP_ACP when converting the string.

Related: