Avoid useless vector coping by move semantic and using referenceness qualifier
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp
- Área
- backend-api-design
Línea de trabajo
Comienza buscando en la base de código BlaBla::toBuffer y el miembro data_, y luego inspecciona cómo los llamadores obtienen buffers de objetos temporales y no temporales. Usa como objetivo de comportamiento los ejemplos de toBuffer con ref-qualified y de asBuffer del issue, y verifica que el uso temporal evita una copia innecesaria mientras el acceso ordinario sigue estando disponible.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
For example:
const std::vector<uint8_t> &BlaBla::toBuffer() const {
return data_;
}
If we use it to make BlaBla and get std::vector<uint8_t> from that and that all.
std::vector<uint8_t> vec = BlaBla().toBuffer(); // <= copy here
Will be better to use ref-qualifier to move data from sigle-used temp object:
const std::vector<uint8_t> &BlaBla::toBuffer() const & { // <= method for case of usual object
return data_;
}
std::vector<uint8_t> BlaBla::toBuffer() const && { // <= method for case of temp object
return std::move(data_);
}
std::vector<uint8_t> &BlaBla::asBuffer() { // <= method to access internal vector
return data_;
}
const std::vector<uint8_t> &BlaBla::asBuffer() const { // <= method to RO-access internal vector
return data_;
}
- Lenguaje dominante
- C++
- Estrellas
- 492
- Forks
- 130
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de libp2p/cpp-libp2p
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
libp2p/cpp-libp2p#351 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
libp2p/cpp-libp2p#347 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
libp2p/cpp-libp2p#341 ·
-
Lack of signedPeerRecord Validation in C++ IdentifyMessageProcessor Leads to Address Injection Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
libp2p/cpp-libp2p#332 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
libp2p/cpp-libp2p#324 · 1 comentario · 1 reacción ·
Todos los issues de libp2p/cpp-libp2p
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
duckdb/duckdb-wasm#2258 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
objectionary/eo-graphs#75 ·
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Abiertocoarray
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
FISCO-BCOS/FISCO-BCOS#5642 ·