Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 06.06.2017, 21:54   #21
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
Репутация: 10
По умолчанию

так значения у меня и есть числа)
olegla вне форума   Ответить с цитированием
Старый 06.06.2017, 21:55   #22
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

Код:

Вернее так

bool Comp(const std::shared_ptr<Material>& left, const std::shared_ptr<Material>& right)

т.е. избегаем копирования объекта "указатель", хотя тут это не существенно.
alexzk вне форума   Ответить с цитированием
Старый 06.06.2017, 22:01   #23
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Код:

Вернее так

bool Comp(const std::shared_ptr<Material>& left, const std::shared_ptr<Material>& right)

т.е. избегаем копирования объекта "указатель", хотя тут это не существенно.
а в ифе что изменить?
или ифа уже не нужно , я так понимаю/ тогда как тут правильно в вектор записывать?
Код:

gameObjectsByMaterial.push_back(*it);

olegla вне форума   Ответить с цитированием
Старый 06.06.2017, 22:02   #24
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

Код:

std::vector<std::vector<std::shared_ptr<GameObject>>> GroupGameObjectsByMaterial(std::shared_ptr<std::vector<std::shared_ptr<GameObject>>> gameObjects)
{
      std::sort(gameObjects->begin(), gameObjects->end(), Comp); 
       std::vector<std::vector<std::shared_ptr<GameObject>>> gameObjectsByMaterial;
	gameObjectsByMaterial.reserve(gameObjects->size);

        for (const auto &obj : *gameObjects)
        {
              gameObjectsByMaterial.push_back(obj);
        }	
	return gameObjectsByMaterial;
}

alexzk вне форума   Ответить с цитированием
Старый 06.06.2017, 22:07   #25
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Код:

std::vector<std::vector<std::shared_ptr<GameObject>>> GroupGameObjectsByMaterial(std::shared_ptr<std::vector<std::shared_ptr<GameObject>>> gameObjects)
{
      std::sort(gameObjects->begin(), gameObjects->end(), Comp); 
       std::vector<std::vector<std::shared_ptr<GameObject>>> gameObjectsByMaterial;
	gameObjectsByMaterial.reserve(gameObjects->size);

        for (const auto &obj : *gameObjects)
        {
              gameObjectsByMaterial.push_back(obj);
        }	
	return gameObjectsByMaterial;
}

все равно на этот кусок кода кричит:
Код:

gameObjectsByMaterial.push_back(obj);

Изображения
Тип файла: jpg ееее.jpg (60.7 Кб, 1 просмотров)
olegla вне форума   Ответить с цитированием
Старый 06.06.2017, 22:07   #26
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

а еще вернее - пусть компилер сам копию делают:

Код:

std::vector<std::vector<std::shared_ptr<GameObject>>> GroupGameObjectsByMaterial(std::shared_ptr<std::vector<std::shared_ptr<GameObject>>> gameObjects)
{
      std::sort(gameObjects->begin(), gameObjects->end(), Comp); 
       return *gameObjects;
}


т.к. вы работете с указателям, gameObjects уже есть ваш результат. Но вот таким return мы с него еще и копию снимаем.
alexzk вне форума   Ответить с цитированием
Старый 06.06.2017, 22:13   #27
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

можно сделать без указателей, и даже без ссылок:

Код:

std::vector<std::vector<std::shared_ptr<GameObject>>> GroupGameObjectsByMaterial(std::vector<std::shared_ptr<GameObject>> gameObjects) //это будет копия оригинала
{
      std::sort(gameObjects.begin(), gameObjects .end(), Comp); 
       return gameObjects; //и возвращаем эту сортированую копию
}

alexzk вне форума   Ответить с цитированием
Старый 06.06.2017, 22:13   #28
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
а еще вернее - пусть компилер сам копию делают:

Код:

std::vector<std::vector<std::shared_ptr<GameObject>>> GroupGameObjectsByMaterial(std::shared_ptr<std::vector<std::shared_ptr<GameObject>>> gameObjects)
{
      std::sort(gameObjects->begin(), gameObjects->end(), Comp); 
       return *gameObjects;
}


т.к. вы работете с указателям, gameObjects уже есть ваш результат. Но вот таким return мы с него еще и копию снимаем.
и всеравно ошибку выдает
Изображения
Тип файла: jpg dsdsfs.jpg (51.7 Кб, 1 просмотров)
olegla вне форума   Ответить с цитированием
Старый 06.06.2017, 22:14   #29
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

блин, у вас результат вектор векторов...

думаю так нада

std::vector<std::shared_ptr<GameObj ect>>
alexzk вне форума   Ответить с цитированием
Старый 06.06.2017, 22:18   #30
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

Код:

std::vector<std::shared_ptr<GameObject>> GroupGameObjectsByMaterial(std::vector<std::shared_ptr<GameObject>> gameObjects) //это будет копия оригинала
{
      std::sort(gameObjects.begin(), gameObjects .end(), Comp); 
       return gameObjects; //и возвращаем эту сортированую копию
}

alexzk вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хеш-таблица и хеш-функция. Проверка на ввод существующих данных F1nt Общие вопросы C/C++ 0 24.01.2014 09:52
Хеш таблица C++ Jirogirg Общие вопросы C/C++ 19 24.08.2012 22:15
хеш-таблица CHUCKe Помощь студентам 2 18.11.2010 00:30
ХЕШ-таблица iceman2112 Общие вопросы C/C++ 0 09.05.2010 13:07
Групировка значений и их сумма, но с условием psbad Microsoft Office Excel 23 19.11.2009 12:00


08:03.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru