Abseil C++: Vollständiges Tutorial mit Code-Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Abseil: Was ist das und warum braucht man es?

Abseil (ausgesprochen wie „ab-sil“) ist eine quelloffene Bibliothek für die Programmiersprache C++, die bei Google entwickelt wurde. Sie ergänzt die Standardbibliothek von C++ (STL) und bietet eine Reihe von hochwertigen, gründlich getesteten und effizienten Komponenten, die bei Google in nahezu allen C++-Projekten zum Einsatz kommen.

Warum sollte man Abseil nutzen? Die Hauptgründe:

  • Lücken der STL schließen: Die Standardbibliothek von C++ entwickelt sich nur langsam. Abseil bietet fertige Lösungen für Aufgaben, die in der Praxis häufig vorkommen, aber noch nicht im Standard enthalten sind (z. B. String-Manipulation, Kommandozeilen-Flags, Hash-Tabellen).
  • Hohe Leistung: Der Code von Abseil ist für moderne Prozessoren und Compiler optimiert. Viele Algorithmen berücksichtigen Cache-Effizienz und SIMD-Instruktionen.
  • Sicherheit und Zuverlässigkeit: Die Bibliothek wird aktiv in der Produktionsumgebung von Google eingesetzt, was ihre Stabilität garantiert. Alle Funktionen haben strenge Grenz- und Typprüfungen.
  • Kompatibilität: Abseil funktioniert mit allen gängigen Compilern (GCC, Clang, MSVC) und Betriebssystemen (Linux, macOS, Windows).
  • Modularität: Sie können nur die Komponenten verwenden, die Sie benötigen, ohne die gesamte Bibliothek einbinden zu müssen.

Abseil besteht aus mehreren wichtigen Modulen:

  • absl/strings: Erweiterte Funktionen für die Arbeit mit Zeichenketten (Teilen, Zusammenfügen, Ersetzen, Formatieren).
  • absl/container: Zusätzliche Container (flat_hash_map, flat_hash_set, InlinedVector, u. a.).
  • absl/flags: Ein leistungsstarkes System zur Verarbeitung von Kommandozeilen-Flags.
  • absl/time: Arbeit mit Zeit und Zeitzonen.
  • absl/status: Verbesserte Fehlerbehandlung (StatusOr, Status).
  • absl/algorithm: Zusätzliche Algorithmen (contains, clamp, u. a.).

Abseil Installation

Anders als bei Python oder JavaScript werden C++-Bibliotheken nicht über pip oder npm installiert. Abseil wird als Quellcode verteilt, der mit CMake oder Bazel kompiliert werden muss. Hier ist die gängigste Methode – die Kompilierung mit CMake.

Installation mit vcpkg (empfohlen für Windows)

vcpkg ist ein Paketmanager für C++ von Microsoft.

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install abseil:x64-windows

Installation mit Conan

Conan ist ein weiterer beliebter Paketmanager.

pip install conan
conan install abseil/20230801.0@

Manuelle Kompilierung mit CMake

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . --target install

Einbindung in CMakeLists.txt

find_package(absl REQUIRED)
target_link_libraries(my_project
    absl::strings
    absl::flat_hash_map
    absl::flags
)

Schnellstart: Code-Beispiel

Schreiben wir ein einfaches Programm, das Abseil für die Arbeit mit Zeichenketten und Kommandozeilen-Flags verwendet.

#include <iostream>
#include "absl/strings/str_join.h"
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"

ABSL_FLAG(std::string, name, "Welt", "Name für die Begrüßung");

int main(int argc, char* argv[]) {
    absl::ParseCommandLine(argc, argv);

    std::vector<std::string> words = {"Hallo", absl::GetFlag(FLAGS_name), "!"};
    std::string greeting = absl::StrJoin(words, " ");

    std::cout << greeting << std::endl;
    return 0;
}

Kompilierung und Ausführung:

g++ -std=c++17 main.cpp -labsl_strings -labsl_flags                    

Empfehlungen