Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[v3] Concepts List

未关闭
#377 8 条评论 0 个 reaction 已指派 8 人 在 GitHub 查看

@AeroStun 已经在做这个了。

开始于 2020年3月9日。

评估

这个 Issue 还没有评估数据。

描述

This is inspired by exercism/v3#167.

C++ reference

Concepts

The C++ concept exercises are based on concepts. The list below contains the concepts that have been identified for the C++ language.

Object-oriented

The core OO features a C++ developer should know about are:

Functional

C++ is a very flexible language, so lots of functional concepts apply to it:

Memory management
  • Object lifetime
  • RAII
  • Move-semantics
  • Free-store (heap)
Functions
  • Function overloading
  • Default parameters
  • Special member-functions
  • Operators
General
  • Arithmetic
  • Sameness (Equality)
  • Ordering
  • Conditionals
  • Enumeration (Container iteration)
  • Iterators
  • Namespaces
  • C-style Input/Output
  • Input/Output stream-based library
  • Templates
  • Metaprogramming
  • Exception handling
  • Implicit/explicit/contextual conversion
  • Destructuring (structured-bindings)
  • Concurrency (thread-safety)
  • Expressions vs statements
  • Value categories
  • Attributes
  • Slicing
  • String literals
  • Reflection (<type_traits>)
  • Undefined Behavior
  • Preprocessor
  • Concepts (Defer to C++2a)
  • Formatting (Defer to C++2a)
Types
Advanced topics
  • Pointers
  • Unions (union)

Concept interpretation

The concept exercises use the following concepts:

concept minimum standard version interpretation
numbers-basic C++98 Know of the existence of the two most basic number types, int and double, and understand that the former represents whole numbers, and the latter floating-point numbers. Know of basic operators such as multiplication and comparison. Know where it's documented, or at least how to search for it.
numbers-integral C++98 Know of the existence of the integer types: int, long, long long (with unsigned and fixed-width variants). Know when to use which type.
numbers-floating-point C++98 Know of the existence of the three floating point types: float, double and long double. Know when to use which type.
strings-basic C++98 Know of the existence of the std::string type. Know of some basic functions (like looking up a character at a position, or slicing the string). Know where it's documented, or at least how to search for it.
strings-formatting C++2a Know how to format a string. Know where it's documented, or at least how to search for it.
chrono-basic C++11 Know of the existence of the <chrono> header. Know of the existence of all three standard clocks and when to use them. Know how to access the current time. Know how to compare dates. Know how to convert a string to a chrono time point and vice versa. Know where it's documented, or at least how to search for it.
enums-basic C++98 Know of the existence of the enum class keyword. Know how to define enum members. Know how to use an enumerators. Know where it's documented, or at least how to search for it
enums-advanced C++98 Know how to define a "flags" enum class. Know how to add, remove or check for flags. Know the difference between a C-style enum and a strongly typed enum
casts-basic C++98 Know that it is sometimes possible to convert from one type to another type using static_cast.
conditionals C++98 Know of the existence of conditional execution statements (such as the if or switch statement).
conditional-injection C++17 Know of the existence of conditional code injection through if constexpr.
bitwise-operations C++98 Know how to apply bitwise operations to numbers. Know where it's documented, or at least how to search for it.
iteration-basic C++11 Know how to iterate over a collection (range-for).
arrays-basic C++11 Know of the existence of the std::array type. Know how to define an array. Know how to access elements in an array by index. Know how to iterate over elements in an array. Know of some basic functions (like finding the index of an element in an array). Know where it's documented, or at least how to search for it.
vectors-basic C++98 Know of the existence of the std::vector type. Know how to define an array. Know how to access elements in an vector by index. Know the unique properties of a vector. Know of some basic functions (like adding an element to a vector). Know where it's documented, or at least how to search for it.
maps-basic C++98 Know of the existence of the std::map and std::unordered_map types. Know how to define an map. Know how to access elements in an map by key. Know the unique properties of a map. Know of some basic functions (like adding an element to a map). Know where it's documented, or at least how to search for it.
sets-basic C++98 Know of the existence of the std::set and std::unordered_set types. Know how to define an set. Know how to access elements in a set. Know the unique properties of a set. Know of some basic functions (like adding an element to a set). Know where it's documented, or at least how to search for it.

This also indicates that for example strings-basic does not teach using custom formatting strings and that numbers-basic does not teach about integer undefined-behavior.

主要语言
C++
星标
291
派生
244
平均合并
17 分钟
30 天内合并 PR
1

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

exercism/cpp 的其他 Issue

查看 exercism/cpp 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。