Я читаю много разных вещей по оптимизации C ++, и я довольно запутался. Буду признателен за помощь. По сути, я хочу уточнить, что должно быть указателем или нет, когда я передаю векторы и структуры в качестве параметров или возвращаю векторы и структуры.
Скажем, у меня есть структура, которая содержит 2 элемента: int и затемвектор целых чисел. Я буду создавать эту структуру локально в функции, а затем возвращать ее. Эта функция будет вызываться несколько раз и каждый раз генерировать новую структуру. Я хотел бы сохранить последнюю структуру, созданную в члене класса (например, lastStruct_). Поэтому перед возвратом структуры я мог бы каким-то образом обновить lastStruct_.
Теперь, что было бы лучшим способом сделать это, зная, что вектор в структуре может быть довольно большим (нужно будет избегать копий). Вектор в структуре должен быть указателем? Если я хочу поделиться lastStruct_ с другими классами, создав метод get_lastStruct (), должен ли я возвращать ссылку на lastStruct_, указатель или не заботиться об этом? Должен ли lastStruct_ быть общим указателем?
Это меня довольно смущает, потому что, очевидно, C ++ знает, как избежать копирования, но я также вижу, что многие люди рекомендуют использовать указатели, в то время как другие говорят, что указатель на вектор не имеет никакого смысла.
struct MyStruct {
std::vector<int> pixels;
int foo;
}
class MyClass {
MyStruct lastStruct_;
public:
MyStruct create_struct();
MyStruct getLastStruct();
}
MyClass::create_struct()
{
MyStruct s = {std::vector<int>(100, 1), 1234};
lastStruct_ = s;
return s;
}
MyClass::getLastStruct()
{
return lastStruct_;
}