Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

Код:
Вернее так

bool Comp(const std::shared_ptr<Material>& left, const std::shared_ptr<Material>& right)
т.е. избегаем копирования объекта "указатель", хотя тут это не существенно.
alexzk вне форума Ответить с цитированием
Старый 06.06.2017, 21:01   #23
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
По умолчанию

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

bool Comp(const std::shared_ptr<Material>& left, const std::shared_ptr<Material>& right)
т.е. избегаем копирования объекта "указатель", хотя тут это не существенно.
а в ифе что изменить?
или ифа уже не нужно , я так понимаю/ тогда как тут правильно в вектор записывать?
Код:
gameObjectsByMaterial.push_back(*it);
olegla вне форума Ответить с цитированием
Старый 06.06.2017, 21:02   #24
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Код:
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, 21:07   #25
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
По умолчанию

Цитата:
Сообщение от 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 Кб, 115 просмотров)
olegla вне форума Ответить с цитированием
Старый 06.06.2017, 21:07   #26
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

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

Код:
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, 21:13   #27
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

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

Код:
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, 21:13   #28
olegla
Пользователь
 
Регистрация: 01.06.2017
Сообщений: 15
По умолчанию

Цитата:
Сообщение от 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 Кб, 149 просмотров)
olegla вне форума Ответить с цитированием
Старый 06.06.2017, 21:14   #29
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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