Loading...
LoshaPanda avatar LoshaPanda 10 Точки

C++ Advanced, Task {5} - Lectures

Извинете, не съм сигурен дали съм на прав път с тази задача. Мисля, че може да има по-добър начин, който не го виждам.

 

Условие на задачата : https://pasteboard.co/JiWgqtN.png

 

judge система : https://judge.softuni.bg/Contests/Compete/Index/1183#4

main.cpp skeleton : https://sourceb.in/3b4dd0cdf1

ResourceType.h skeleton : https://sourceb.in/1c3a75aa4a

Това, което аз съм решил за сега е описано с кода тук :
https://sourceb.in/511c0a74ef

Частта, която ме затруднява е ranged based for loop-а в main.cpp на 32 ред. Отляво имаме constant обект Resource, а от дясно обект-а lecture, което е самият проблем. Аз в Lecture класа имам static струкруа от данни, къедето съм си прихвърлил всичко с кода до момента, но някак си трябва да го принтирам в този цикъл :

for (const Resource& r : lecture) {
		std::cout << r << std::endl;
	}

 

. Някой би ли ме насочил ?

 

 

0
C++ Advanced
MartinBG avatar MartinBG 4803 Точки

За да работи този код:

	for (const Resource& r : lecture) {
		std::cout << r << std::endl;
	}

трябва да са изпълнени следните условия:

  1. Lecture да има методи begin() и end(), които да връщат итератори към обекти от тип Resource, например:
      class Lecture {
        std::set<Resource> resources;
      public:
        // ...
    
        std::set<Resource>::iterator begin() const {
          return this->resources.begin();
        };
    
        std::set<Resource>::iterator end() const {
          return this->resources.end();
        };
      };
  2. Resource да овърлоудва << оператора, например:
      class Resource {
        int id{ };
        ResourceType type{ };
        std::string link;
      public:
        // ...
     
        friend std::ostream& operator<<(std::ostream& out, const Resource& resource);
      };  
    
      std::ostream& operator<<(std::ostream& out, const Resource& resource) {
        return out << resource.id << " " << resource.type << " " << resource.link;
      }

     

Повече по темата:

Оperator Оverloading

0
05/08/2020 12:39:22
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.