Yleiset standardiconceptit: integral, Ranges
Käytä standardikirjaston concept-tyyppejä, kuten integral ja ranges::range.
Yleiset standardiconceptit: integral, Ranges on ilmainen C++ Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu C++ Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Standardikonseptikirjasto
C++20 toi käyttöön monia standardikonsepteja otsakkeissa <concepts> ja <ranges>. Niiden tunteminen vähentää omien konseptien kirjoittamisen tarvetta.
Kielen ydinkonseptit
Perustavanlaatuiset konseptit:
std::same_as<T, U>std::derived_from<T, U>std::convertible_to<T, U>std::common_with<T, U>std::assignable_from<T, U>
Aritmeettiset konseptit
Rajoita tyypit numeerisiin tyyppeihin:
std::integral— mikä tahansa kokonaislukutyyppistd::signed_integral— etumerkillinen kokonaislukustd::unsigned_integral— etumerkitön kokonaislukustd::floating_point— float, double tai long double
template <std::floating_point T>
T mean(T a, T b) { return (a + b) / 2; }Vertailukonseptit
Rajoita tyyppejä yhtäsuuruuden ja järjestyksen vertailua varten:
std::equality_comparablestd::totally_orderedstd::three_way_comparable
Oliokonseptit
Yleisiä vaatimuksia:
std::movablestd::copyablestd::default_initializablestd::semiregularstd::regular
template <std::regular T>
class Container { /* full-fledged value type */ };Kutsuttavuuskonseptit
Funktioita ja funktoriolioita varten:
std::invocable<F, Args...>std::regular_invocable<F, Args...>std::predicate<F, Args...>
template <std::invocable<int> F>
void apply_to_42(F&& f) {
std::forward<F>(f)(42);
}Iteraattorikonseptit
Otsakkeessa <iterator>:
std::input_iteratorstd::forward_iteratorstd::bidirectional_iteratorstd::random_access_iteratorstd::contiguous_iterator
Range-konseptit (C++20)
Otsakkeesta <ranges>:
std::ranges::range— sisältää begin- ja end-operaatiotstd::ranges::view— omistamaton rangestd::ranges::sized_range— tuntee kokonsa ajassa O(1)std::ranges::random_access_range
template <std::ranges::range R>
auto first(R&& r) {
return *std::ranges::begin(r);
}Konseptien yhdistäminen
Yhdistä konsepteja täsmällisten vaatimusten ilmaisemiseksi.
template <std::ranges::random_access_range R>
requires std::integral<std::ranges::range_value_t<R>>
auto sum(const R& r) {
return std::reduce(std::ranges::begin(r), std::ranges::end(r));
}Omien konseptien rakentaminen
Rakenna toimialakohtaisia konsepteja standardikonseptien päälle.
template <typename T>
concept Number = std::integral<T> || std::floating_point<T>;Konsepteihin perustuvat algoritmit
C++20:n ranges-algoritmeja rajoitetaan voimakkaasti konsepteilla. Kun annat sopimattoman tyypin, niiden virheilmoitukset kertovat suoraan, mikä konsepti ei täyttynyt.
Pikaopas
Käytä valmiita konsepteja aina kun mahdollista:
- Luvut →
integral/floating_point - Iterointi →
ranges::range - Kutsuttavat oliot →
invocable/predicate - Arvotyyppi →
regulartaisemiregular
Pikatarkistus
Mikä standardikonsepti kuvaa tyyppiä, jolla on sekä begin() että end()?
Kertaus
Standardikirjasto sisältää monipuoliset konseptikirjastot: aritmeettiset (integral, floating_point), vertailukelpoiset (equality_comparable), oliokonseptit (movable, regular) sekä kutsuttavuus-, iteraattori- ja range-konseptit. Käytä niitä omien rajoitteidesi perustana.
Opi C++ tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Yleiset standardiconceptit: integral, Ranges” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa C++ Academy-oppimispolun 3 oppituntia, myös oppitunnin “Yleiset standardiconceptit: integral, Ranges”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yleiset standardiconceptit: integral, Ranges”?
Käytä standardikirjaston concept-tyyppejä, kuten integral ja ranges::range. Harjoittelet C++ Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C++ Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C++ Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Yleiset standardiconceptit: integral, Ranges”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C++ Academy-oppitunnilla?
Kyllä. Jokainen C++ Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Miksi concepts eikä SFINAE
- Conceptien määrittely requires-lausekkeilla
- Conceptien käyttö malleissa ja autossa
- Yleiset standardiconceptit: integral, Ranges