• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie - optional w c++

VPS Starter Arubacloud
0 głosów
392 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,420 p.)

Jak mając zwrotną funkcję optional vector zwrócić vector?

#include <iostream>
#include <vector>
#include <optional>
using namespace std;
optional<vector<int>> dp[1000];

optional<vector<int>> howSum(int targetSum, vector<int> numbers) {
    for (int i = 0; i <= targetSum; ++i) {
        dp[i] = nullopt;
    }
    return { 3,2 };
}

int main()
{
    std::cout << "Hello World!\n";
}

 

1 odpowiedź

+3 głosów
odpowiedź 23 stycznia 2023 przez adrian17 Ekspert (344,100 p.)
wybrane 23 stycznia 2023 przez Dani
 
Najlepsza

Jeszcze jedna klamra?

return {{3, 2}};

 

komentarz 23 stycznia 2023 przez Dani Obywatel (1,420 p.)
Wiesz może jak przeiterować przez optional<vector<int>> ?
komentarz 23 stycznia 2023 przez adrian17 Ekspert (344,100 p.)
Traktuj optional jakby był niejako wskaźnikiem - musisz sprawdzić czy nie jest pusty (.has_value()) i wyciągnąć ze środka referencję do wartości albo operatorem *, albo z .value().
komentarz 23 stycznia 2023 przez Dani Obywatel (1,420 p.)
Mógłbyś napisać przykładowo kod wyciągnięcia ze środka referencji, bo nie do końca rozumiem
1
komentarz 23 stycznia 2023 przez adrian17 Ekspert (344,100 p.)

no, zamiast

// vector<int> a;
for (int x : a) { cout << x; } 

To:

// optional<vector<int>> a;
if (a.has_value()) {
    for (int x : *a) { cout << x; } 
}

// albo

for (int x : a.value()) { cout << x; } 

 

komentarz 23 stycznia 2023 przez Dani Obywatel (1,420 p.)
edycja 23 stycznia 2023 przez Dani
Dzięki wielkie, a czy jest możliwość dostania się do poszczególnego elementu? I także jak dodać jakąś wartość do optional<vecotr<int>>?
komentarz 23 stycznia 2023 przez adrian17 Ekspert (344,100 p.)

I także jak dodać jakąś wartość do optional<vecotr<int>>?

To cały czas jest vector<int>, tylko schowany za warstwą optionala. Indeksowanie, push_back etc działają cały czas dokładnie tak samo na tym wewnętrznym vectorze. Porównanie jakby ten optional to był wskaźnik na vector też jest aktualne.

1
komentarz 24 stycznia 2023 przez Dani Obywatel (1,420 p.)
edycja 24 stycznia 2023 przez Dani
Czy dałbyś radę napisać jeszcze do tego przykład w c++? Byłbym bardzo wdzięczny

EDIT : Udało mi się jednak to wykonać

Podobne pytania

0 głosów
0 odpowiedzi 78 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,420 p.)
0 głosów
1 odpowiedź 76 wizyt
pytanie zadane 21 lutego 2022 w Java przez matrasek15 Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 167 wizyt
pytanie zadane 16 maja 2020 w Java przez aram100 Użytkownik (500 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...