Esiste un'implementazione nella libreria dei buffer di protocollo che consente di ordinare l'array specificato come campo ripetuto? Ad esempio, supponiamo che la matrice sia costituita da elementi di un tipo che a sua volta contiene un campo indice in base al quale gli elementi dell'array devono essere ordinati. Non riuscivo a trovarlo, quindi immagino che dovrò scriverne uno io stesso. Volevo solo confermare. Grazie.Ordinamento degli elementi nel campo ripetuto di un messaggio in Google Protocol Buffers
8
A
risposta
8
I protobuf forniscono un'interfaccia RepeatedPtr, tramite i metodi mutable_ *, che possono essere ordinati con il modello std :: sort().
A meno che il tipo sottostante del campo ripetuto sia semplice, è probabile che si desideri utilizzare un operatore sovraccarico <, comparatore o lambda per farlo. Un esempio di giocattolo usando un lambda sarebbe:
message StaffMember {
optional string name = 1;
optional double hourly_rate = 2;
}
message StoreData {
repeated StaffMember staff = 1;
}
StoreData store;
// Reorder the list of staff by pay scale
std::sort(store->mutable_staff()->begin(),
store->mutable_staff()->end(),
[](const StaffMember& a, const StaffMember& b){
return a.hourly_rate() < b.hourly_rate();
});
Problemi correlati
- 1. Raccolte nel messaggio Protocol Buffers?
- 2. Looping degli attributi di Protocol Buffers in Python
- 3. Esiste un'implementazione di protocolli Google Protocol Buffers in .NET
- 4. Serializzazione ad alte prestazioni: Java vs Google Protocol Buffers vs ...?
- 5. Per cosa vengono utilizzati Apache Thrift e Google Protocol Buffers?
- 6. Google Protocol Buffers, HDF5, Confronto NumPy (trasferimento dati)
- 7. Cosa significa campo RIPETUTO in Google Bigquery?
- 8. Ordinamento degli elementi dell'array
- 9. Google Protocol Buffers Stabilità e sicurezza dell'implementazione C++ di fronte a dati dannosi
- 10. Esiste una mappatura standard tra JSON e Protocol Buffers?
- 11. Protocollo Google Buffers e HTTP
- 12. Come eliminare oggetti arbitrari nel campo ripetuto? (protobuf)
- 13. Analizza file di testo per Google Protocol Buffer
- 14. Qual è il motivo della codifica ZigZag in Protocol Buffers e Avro?
- 15. Protocol Buffer: come definire il tipo di data?
- 16. L'ordine degli elementi nel dizionario
- 17. Python - Ordinamento di elementi in un elenco di elenchi
- 18. Delphi: Applicazione registrazione degli errori nel campo
- 19. Quali sono i significati degli elementi nel messaggio di errore "Trappola allineamento"?
- 20. ordinamento UNIX: ordinamento degli appunti dagli appunti
- 21. tooltip degli elementi selezionati nel componente select2
- 22. Ordinamento elementi di diverse DIV
- 23. Ordinamento di elementi in stringa con Python
- 24. "facoltativo ripetuto" con google protobuf per Java
- 25. Come impostare un campo ProtoBuf che è un messaggio vuoto in Python?
- 26. Visualizzazione degli errori di campo Grails
- 27. Delphi: scrivere nel campo degli antenati privati in classe discendente
- 28. Ordinamento di tutti gli elementi in un XDocument
- 29. elementi di ordinamento in un pannello stack WPF
- 30. Protocol Buffer su socket in C++
Questo solo ... * non è il lavoro di protobuf *; se vuoi ordinare i dati, ordinali * prima * ti avvicini al serializzatore. Il lavoro del serializzatore è quello di ottenere i dati in byte e viceversa, preservando la semantica come l'ordine. –
@MarcGravell, in realtà speravo che non avrei dovuto fare una copia degli stessi dati nel mio codice applicazione e quindi scaricarlo nel protobuf, ma per avere informazioni ordinate credo che dovrò farlo. Grazie. – AarCee