Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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


03:24.


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

RusProfile.ru


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