#include <google/protobuf/repeated_field.h>
namespace google::protobuf
TekrarlananAlan ve TekrarlananAlan, oluşturulan protokol mesajı sınıfları tarafından yinelenen alanları değiştirmek için kullanılır.
Bu sınıflar, STL'nin vektörüne çok benzer, ancak özellikle Protokol Arabellekleri söz konusu olduğunda yararlı olduğu tespit edilen çeşitli optimizasyonlar içerir. YinelenenedPtrField, içerdiği işaretçilerin sahipliğini yönettiği için özellikle STL vektöründen farklıdır.
Genellikle istemcilerin TekrarlananAlan nesnelerine doğrudan erişmesi gerekmez. Bunun yerine, protokol derleyici tarafından otomatik olarak oluşturulan erişimci işlevlerini kullanmalıdır.
Bu dosyadaki sınıflar | |
---|---|
Yinelenen Alan, temel bir öğenin yinelenen alanlarını (yani dizeler ve iç içe yerleştirilmiş Mesajlar hariç her şeyi) temsil etmek için kullanılır. | |
TekrarlananPtrAlanı, TekrarlananAlan gibidir ancak yinelenen dizeler veya Mesajlar için kullanılır. |
Dosya ÜyeleriBu tanımlar herhangi bir sınıfın parçası değildir. | |
---|---|
template internal::RepeatedFieldBackInsertIterator< T > | RepeatedFieldBackInserter(RepeatedField< T > *const mutable_field) Std::back_inserter() işlevine benzer şekilde TekrarlananAlan örnekleri için bir geri ekleme yinelemesi sağlar. |
template internal::RepeatedPtrFieldBackInsertIterator< T > | RepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field) std::back_inserter() işlevine benzer şekilde TekrarlananPtrField örnekleri için bir geri ekleme yinelemesi sağlar. |
template internal::RepeatedPtrFieldBackInsertIterator< T > | RepeatedFieldBackInserter(RepeatedPtrField< T > *const mutable_field) Bir kişinin ortak bir ad kullanarak hem Tekrarlanan Alanlar'a hem de TekrarlıPtrFields'e erişebilen genel şablon kodunu yazmak istemesi ihtimaline karşı, TekrarlananPtrField örnekleri için özel geri ekleme yinelemesi. |
template internal::AllocatedRepeatedPtrFieldBackInsertIterator< T > | AllocatedRepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field) Öğeleri kopyalarken sahipliği aktaran std::back_inserter() işlevine benzer YinelenenedPtrField örnekleri için bir geri ekleme yinelemesi sağlar. |
template internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator< T > | UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field) AllocationduplicateedPtrFieldBackInserter'a benzer şekilde, AddAllocation yerine UnsafeArenaAddAllocalized kullanılır. devamı... |
template internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator< T >
protobuf::UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
RepeatedPtrField< T > *const mutable_field)
protobuf::UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
RepeatedPtrField< T > *const mutable_field)
AllocationduplicateedPtrFieldBackInserter'a benzer şekilde, AddAllocation yerine UnsafeArenaAddAllocalized kullanılır.
Bu işlem önemliyse biraz daha hızlıdır. Ayrıca, kopyalardan kaçınmak için geçici sahiplik kullanan eski kodda da kullanışlıdır. Örnek:
RepeatedPtrField<T> temp_field; temp_field.AddAllocated(new T); ... // Do something with temp_field temp_field.ExtractSubrange(0, temp_field.size(), nullptr);
Arenaya temp_field'ı eklerseniz bu işlem sahipliğin "AddAllocation" aramasında arenaya aktarılması ve artık serbest bırakılması nedeniyle iki kez silinir. UnsafeArenaAddAllocation'ı kullanmak bunu önler.
şablon sınıfı Yinelenen Alanı
#include <google/protobuf/repeated_field.h>
namespace google::protobuf
template <typename >
Yinelenen Alan, temel bir öğenin yinelenen alanlarını (yani dizeler ve iç içe yerleştirilmiş Mesajlar hariç her şeyi) temsil etmek için kullanılır.
Çoğu kullanıcı doğrudan Tekrarlanan Alan kullanmaz. Dizine göre alma, dizine ekleme ve tekrarlanan tüm alanlar için oluşturulan erişimcileri kullanır.
Üyeler | |
---|---|
typedef | Element * iterator STL benzeri iteratör desteği. |
typedef | const Element * const_iterator |
typedef | Element value_type |
typedef | value_type & reference |
typedef | const value_type & const_reference |
typedef | value_type * pointer |
typedef | const value_type * const_pointer |
typedef | int size_type |
typedef | ptrdiff_t difference_type |
typedef | std::reverse_iterator< const_iterator > const_reverse_iterator Yinelenen iter desteği. |
typedef | std::reverse_iterator< iterator > reverse_iterator |
constexpr | RepeatedField() |
explicit | RepeatedField(Arena * arena) |
| RepeatedField(const RepeatedField & other) |
template | RepeatedField(Iter begin, Iter end) |
| ~RepeatedField() |
RepeatedField & | operator=(const RepeatedField & other) |
| RepeatedField(RepeatedField && other) |
RepeatedField & | operator=(RepeatedField && other) |
bool | empty() const |
int | size() const |
const Element & | Get(int index) const |
Element * | Mutable(int index) |
const Element & | operator[](int index) const |
Element & | operator[](int index) |
const Element & | at(int index) const |
Element & | at(int index) |
void | Set(int index, const Element & value) |
void | Add(const Element & value) |
Element * | Add() Yeni öğe ekler ve bu öğeye bir işaretçi döndürür. devamı... |
template void | Add(Iter begin, Iter end) Uygun sayıda öğe ayırttıktan sonra öğeleri [[]start, end) aralığına ekleyin. |
void | RemoveLast() Dizideki son öğeyi kaldırın. |
void | ExtractSubrange(int start, int num, Element * elements) "[[]start .. start+num-1]" dizinlerinde dizinleri içeren öğeleri çıkarın. devamı... |
void | Clear() |
void | MergeFrom(const RepeatedField & other) |
void | CopyFrom(const RepeatedField & other) |
template void | Assign(Iter begin, Iter end) İçeriği Tekrarlanan Alan(başlangıç, bitiş) ile değiştirir. |
void | Reserve(int new_size) Alanı en azından belirtilen boyuta genişletmek için alan ayırın. devamı... |
void | Truncate(int new_size) TekrarlananAlan'ı yeni ve daha küçük bir boyuta yeniden boyutlandırın. Bu O(1)'dür. |
void | AddAlreadyReserved(const Element & value) |
Element * | AddAlreadyReserved() Yeni öğe ekler ve bu öğeye bir işaretçi döndürür. devamı... |
Element * | AddNAlreadyReserved(int elements) |
int | Capacity() const |
void | Resize(int new_size, const Element & value) STL ile yeniden boyutlandırma gibi. devamı... |
Element * | mutable_data() Temel diziyi alır. devamı... |
const Element * | data() const |
void | Swap(RepeatedField * other) İçeriğin tamamını "diğer" ile değiştirin. devamı... |
void | UnsafeArenaSwap(RepeatedField * other) İçeriğin tamamını "diğer" ile değiştirin. devamı... |
void | SwapElements(int index1, int index2) İki öğeyi değiştirin. |
iterator | begin() |
const_iterator | begin() const |
const_iterator | cbegin() const |
iterator | end() |
const_iterator | end() const |
const_iterator | cend() const |
reverse_iterator | rbegin() |
const_reverse_iterator | rbegin() const |
reverse_iterator | rend() |
const_reverse_iterator | rend() const |
size_t | SpaceUsedExcludingSelfLong() const Sizeof(*this) hariç, yinelenen alan tarafından kullanılan bayt sayısını döndürür |
int | SpaceUsedExcludingSelf() const |
iterator | erase(const_iterator position) Konumun başvurduğu öğeyi kaldırır. devamı... |
iterator | erase(const_iterator first, const_iterator last) [[]İlk, son) aralıktaki öğeleri kaldırır. devamı... |
Arena * | GetArena() const Bu koyduğunuz alan, öğelerini depoladığı Arena'yı edinin. |
void | InternalSwap(RepeatedField * other) Yalnızca şirket içi kullanım içindir. devamı... |
template | RepeatedField(Iter begin, Iter end) |
Element * RepeatedField::Add()
Yeni öğe ekler ve bu öğeye bir işaretçi döndürür.
|Öğe| bir POD türüyse yeni öğe başlatılmamıştır.
void RepeatedField::ExtractSubrange(
int start,
int num,
Element * elements)
int start,
int num,
Element * elements)
"[[]start .. start+num-1]" dizinlerinde dizinleri içeren öğeleri çıkarın.
"Elements" NULL değilse "items[[]0 .. num-1]" içine kopyalayın. Dikkat: Uygulama öğeleri, dizinleri [[]start+num ..] olan öğeleri de taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.
void RepeatedField::Reserve(
int new_size)
int new_size)
Alanı en azından belirtilen boyuta genişletmek için alan ayırın.
Reserve() satırını satır içi yapmaktan kaçının: Yeni, kopyala ve sil[[]] ciddi miktarda kod şişmesine neden olur.
Dizin büyütülürse her zaman en az iki katına çıkar.
Element * RepeatedField::AddAlreadyReserved()
Yeni öğe ekler ve bu öğeye bir işaretçi döndürür.
|Öğe| bir POD türüyse yeni öğe başlatılmamıştır. Yalnızca Capacity() > Size() işlevi çağrılmalıdır.
void RepeatedField::Resize(
int new_size,
const Element & value)
int new_size,
const Element & value)
STL ile yeniden boyutlandırma gibi.
Eklenen öğeleri doldurmak için değer kullanır. new_size <= size() ise Truncate() gibi bir değer girin. Aksi takdirde O(new_size - size()) değerini girin.
Element * RepeatedField::mutable_data()
Temel diziyi alır.
Bu işaretçi her türlü ekleme veya kaldırma işlemiyle geçersiz kılınmış olabilir.
void RepeatedField::Swap(
RepeatedField * other)
RepeatedField * other)
İçeriğin tamamını "diğer" ile değiştirin.
Bunlar ayrı alanlarsa verileri birbirleri arasında kopyalar.
void RepeatedField::UnsafeArenaSwap(
RepeatedField * other)
RepeatedField * other)
İçeriğin tamamını "diğer" ile değiştirin.
Yalnızca, arayanın her iki yinelenen alanın da aynı arenada veya yığında olduğunu garanti edebildiği durumlarda çağrılmalıdır. Farklı arenalar arasında geçiş yapmaya izin verilmiyor ve bir GOOGLE_DCheck tarafından yakalanıyor (ayrıntılar için API dokümanlarına bakın).
iterator RepeatedField::erase(
const_iterator position)
const_iterator position)
Konumun başvurduğu öğeyi kaldırır.
Kaldırılan öğenin hemen ardından öğeye bir yineleme döndürür.
end() da dahil olmak üzere, kaldırılan öğedeki veya sonraki öğenin tüm tekrarlarını geçersiz kılar.
iterator RepeatedField::erase(
const_iterator first,
const_iterator last)
const_iterator first,
const_iterator last)
[[]İlk, son) aralıktaki öğeleri kaldırır.
Kaldırılan aralığın hemen ardından öğeye döner.
end() dahil olmak üzere, kaldırılan aralıktaki veya sonraki tüm tekrarlayıcıları geçersiz kılar.
void RepeatedField::InternalSwap(
RepeatedField * other)
RepeatedField * other)
Yalnızca şirket içi kullanım içindir.
Oluşturulan kod tarafından çağrıldığı için bu işlem herkese açıktır.
şablon sınıfı TekrarlıPtrField
#include <google/protobuf/repeated_field.h>
namespace google::protobuf
template <typename >
TekrarlananPtrAlanı, TekrarlananAlan gibidir ancak yinelenen dizeler veya Mesajlar için kullanılır.
Üyeler | |
---|---|
typedef | internal::RepeatedPtrIterator< Element > iterator STL benzeri iteratör desteği. |
typedef | internal::RepeatedPtrIterator< const Element > const_iterator |
typedef | Element value_type |
typedef | value_type & reference |
typedef | const value_type & const_reference |
typedef | value_type * pointer |
typedef | const value_type * const_pointer |
typedef | int size_type |
typedef | ptrdiff_t difference_type |
typedef | std::reverse_iterator< const_iterator > const_reverse_iterator Yinelenen iter desteği. |
typedef | std::reverse_iterator< iterator > reverse_iterator |
typedef | internal::RepeatedPtrOverPtrsIterator< Element *, void * > pointer_iterator Tekrar eden ve temel işaretçileri öğenin kendisi yerine Element'e döndüren STL benzeri özel iteratör. |
typedef | internal::RepeatedPtrOverPtrsIterator< const Element *const, const void *const > const_pointer_iterator |
constexpr | RepeatedPtrField() |
explicit | RepeatedPtrField(Arena * arena) |
| RepeatedPtrField(const RepeatedPtrField & other) |
template | RepeatedPtrField(Iter begin, Iter end) |
| ~RepeatedPtrField() |
RepeatedPtrField & | operator=(const RepeatedPtrField & other) |
| RepeatedPtrField(RepeatedPtrField && other) |
RepeatedPtrField & | operator=(RepeatedPtrField && other) |
bool | empty() const |
int | size() const |
const Element & | Get(int index) const |
Element * | Mutable(int index) |
Element * | Add() |
void | Add(Element && value) |
template void | Add(Iter begin, Iter end) Uygun sayıda öğe ayırttıktan sonra öğeleri [[]start, end) aralığına ekleyin. |
const Element & | operator[](int index) const |
Element & | operator[](int index) |
const Element & | at(int index) const |
Element & | at(int index) |
void | RemoveLast() Dizideki son öğeyi kaldırın. devamı... |
void | DeleteSubrange(int start, int num) [[]start içerisinde dizinleri olan öğeleri silin . devamı... |
void | Clear() |
void | MergeFrom(const RepeatedPtrField & other) |
void | CopyFrom(const RepeatedPtrField & other) |
template void | Assign(Iter begin, Iter end) İçeriği TekrarlıPtrField(start, end) ile değiştirir. |
void | Reserve(int new_size) Alanı en azından belirtilen boyuta genişletmek için alan ayırın. devamı... |
int | Capacity() const |
Element ** | mutable_data() Temel diziyi alır. devamı... |
const Element *const * | data() const |
void | Swap(RepeatedPtrField * other) İçeriğin tamamını "diğer" ile değiştirin. devamı... |
void | UnsafeArenaSwap(RepeatedPtrField * other) İçeriğin tamamını "diğer" ile değiştirin. devamı... |
void | SwapElements(int index1, int index2) İki öğeyi değiştirin. |
iterator | begin() |
const_iterator | begin() const |
const_iterator | cbegin() const |
iterator | end() |
const_iterator | end() const |
const_iterator | cend() const |
reverse_iterator | rbegin() |
const_reverse_iterator | rbegin() const |
reverse_iterator | rend() |
const_reverse_iterator | rend() const |
pointer_iterator | pointer_begin() |
const_pointer_iterator | pointer_begin() const |
pointer_iterator | pointer_end() |
const_pointer_iterator | pointer_end() const |
size_t | SpaceUsedExcludingSelfLong() const Size*(*this) hariç, yinelenen alan tarafından kullanılan bayt sayısını döndürür (tahmini). |
int | SpaceUsedExcludingSelf() const |
template | RepeatedPtrField(Iter begin, Iter end) |
Gelişmiş bellek yönetimiGüçlü bellek yönetimi gerektiğinde (zaman zaman Google'da yapılması gerektiğinde), aşağıdaki yöntemler yararlı olabilir. | |
void | AddAllocated(Element * value) Sahipliği YinelenenedPtrField öğesine geçirerek önceden ayrılmış bir nesne ekleyin. devamı... |
PROTOBUF_FUTURE_MUST_USE_RESULT Element * | ReleaseLast() Son öğeyi kaldırın ve geri vererek sahipliği arayana iletin. devamı... |
void | UnsafeArenaAddAllocated(Element * value) Arena-sahiplik kontrollerini atlayarak zaten ayrılmış bir nesne ekleyin. devamı... |
Element * | UnsafeArenaReleaseLast() Son öğeyi kaldırıp kaldırın. devamı... |
void | ExtractSubrange(int start, int num, Element ** elements) "[[]start .. start+num-1]" aralığında dizinlere sahip öğeleri çıkarın. devamı... |
void | UnsafeArenaExtractSubrange(int start, int num, Element ** elements) Tekrarlanan alan bir arenada yer alıyorsa nesne kopyaları oluşturulmaması dışında, yukarıda açıklanan extraSubrange() ile aynıdır. devamı... |
int | ClearedCount() const Yeniden kullanım için kullanılmakta olan temizlenmiş nesne sayısını alın. |
void | AddCleared(Element * value) Temizlenen nesneler havuzuna bir öğe ekleyerek sahipliği YinelenenedPtrField'e iletin. devamı... |
PROTOBUF_FUTURE_MUST_USE_RESULT Element * | ReleaseCleared() Temizlenen havuzdan tek bir öğe kaldırıp sahipliği kaldırarak arayana aktarın. devamı... |
iterator | erase(const_iterator position) Konumun başvurduğu öğeyi kaldırır. devamı... |
iterator | erase(const_iterator first, const_iterator last) [[]İlk, son) aralıktaki öğeleri kaldırır. devamı... |
Arena * | GetArena() const Bu TekrarlananPtrField öğesinin öğelerini depoladığı alanı alır. |
void | InternalSwap(RepeatedPtrField * other) Yalnızca şirket içi kullanım içindir. devamı... |
void RepeatedPtrField::RemoveLast()
Dizideki son öğeyi kaldırın.
Öğenin sahipliği dizi tarafından korunur.
void RepeatedPtrField::DeleteSubrange(
int start,
int num)
int start,
int num)
[[]start içerisinde dizinleri olan öğeleri silin .
. başlangıç+sayı-1]. Dikkat: Uygulama, dizinleri [[]start+num .. ] olan tüm öğeleri taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.
void RepeatedPtrField::Reserve(
int new_size)
int new_size)
Alanı en azından belirtilen boyuta genişletmek için alan ayırın.
Bu işlem yalnızca işaretçi dizisini yeniden boyutlandırır; herhangi bir nesne ayırmaz. Dizin büyütülürse her zaman en az iki katına çıkar.
Element ** RepeatedPtrField::mutable_data()
Temel diziyi alır.
Bu işaretçi her türlü ekleme veya kaldırma işlemiyle geçersiz kılınmış olabilir.
void RepeatedPtrField::Swap(
RepeatedPtrField * other)
RepeatedPtrField * other)
İçeriğin tamamını "diğer" ile değiştirin.
Bunlar ayrı alanlardaysa verileri kopyalar.
void RepeatedPtrField::UnsafeArenaSwap(
RepeatedPtrField * other)
RepeatedPtrField * other)
İçeriğin tamamını "diğer" ile değiştirin.
Arayan, her iki alanın da aynı arenada veya her ikisinde de bulunduğunu garanti etmelidir. Bu işlevle farklı arenalar arasında geçiş yapmaya izin verilmez ve bunlar GOOGLE_DCheck ile yakalanır.
void RepeatedPtrField::AddAllocated(
Element * value)
Element * value)
Sahipliği YinelenenedPtrField öğesine geçirerek önceden ayrılmış bir nesne ekleyin.
Arenalarla ilgili bazı özel davranışların gerçekleştiğini unutmayın:
(i) if this field holds submessages, the new submessage will be copied if the original is in an arena and this RepeatedPtrField is either in a different arena, or on the heap. (ii) if this field holds strings, the passed-in string *must* be heap-allocated, not arena-allocated. There is no way to dynamically check this at runtime, so User Beware.
PROTOBUF_FUTURE_MUST_USE_RESULT Element *
RepeatedPtrField::ReleaseLast()
RepeatedPtrField::ReleaseLast()
Son öğeyi kaldırın ve geri vererek sahipliği arayana iletin.
Gereken boyut: size() > 0
Bu koyduğu Yinelenen Alan bir arenadaysa sahipliği kullanıcıya aktarmak için bir nesne kopyası gerekir (uyumlu semantik için). Bu davranış istenmeyen bir durumsa UnsafeArenaReleaseLast() işlevini kullanın.
void RepeatedPtrField::UnsafeArenaAddAllocated(
Element * value)
Element * value)
Arena-sahiplik kontrollerini atlayarak zaten ayrılmış bir nesne ekleyin.
Kullanıcı, belirtilen nesnenin bu YinelenenedPtrField ile aynı arenada olduğunu garanti etmelidir. Ayrıca, kopyalardan kaçınmak için geçici sahiplik kullanan eski kodda da kullanışlıdır. Örnek:
RepeatedPtrField<T> temp_field; temp_field.AddAllocated(new T); ... // Do something with temp_field temp_field.ExtractSubrange(0, temp_field.size(), nullptr);
Arenaya temp_field'ı eklerseniz bu işlem sahipliğin "AddAllocation" aramasında arenaya aktarılması ve artık serbest bırakılması nedeniyle iki kez silinir. UnsafeArenaAddAllocation bunu engeller.
Element * RepeatedPtrField::UnsafeArenaReleaseLast()
Son öğeyi kaldırıp kaldırın.
Yalnızca bir arenada çalışırken çalışır. Döndürülen işaretçi arenadaki orijinal nesneye işaret ediyor, bu nedenle arenanın ömrü var. Gereken: current_size_ > 0
void RepeatedPtrField::ExtractSubrange(
int start,
int num,
Element ** elements)
int start,
int num,
Element ** elements)
"[[]start .. start+num-1]" aralığında dizinlere sahip öğeleri çıkarın.
Arayan kişi, çıkarılan öğelerin sahipliğini üstlenir ve artık gerekli olmayan öğeleri silmekten sorumludur. "Elements" NULL değilse, çıkarılan öğeleri işaret edenler arayanın yararı için "Elements[[]0 .. num-1]" içinde depolanır. "Elements" NULL ise arayan, bu öğelerde başka işlemler (ör. silme) gerçekleştirmek için başka bir mekanizma kullanmalıdır. Dikkat: Uygulama öğeleri, dizinleri [[]start+num ..] olan öğeleri de taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.
Bellek kopyalama davranışı yukarıda açıklanan ReleaseLast() ile aynıdır: Bu koyduğu yinelenen alan bir arenada döndürülürse döndürülen her öğe için nesne kopyası oluşturulur. Böylece döndürülen tüm öğe işaretçileri yığınla ayrılmış kopyaları oluşturur. Bu kopya istenmezse kullanıcı UnsafeArenaextraSubrange() yöntemini çağırmalıdır.
void RepeatedPtrField::UnsafeArenaExtractSubrange(
int start,
int num,
Element ** elements)
int start,
int num,
Element ** elements)
Tekrarlanan alan bir arenada yer alıyorsa nesne kopyaları oluşturulmaması dışında, yukarıda açıklanan extraSubrange() ile aynıdır.
Bunun yerine, ham nesne işaretçileri döndürülür. Bu nedenle, bir arenada döndürülen nesneler serbest bırakılmaması gerektiği için serbest bırakılmamalıdır.
void RepeatedPtrField::AddCleared(
Element * value)
Element * value)
Temizlenen nesneler havuzuna bir öğe ekleyerek sahipliği YinelenenedPtrField'e iletin.
Bu yöntem çağrılmadan önce öğe temizlenmelidir.
Tekrarlanan alan bir arenada veya |value| olduğunda bu yöntem çağrılamaz. Her iki durum da bir GOOGLE_DTEST-hatası tetikler.
PROTOBUF_FUTURE_MUST_USE_RESULT Element *
RepeatedPtrField::ReleaseCleared()
RepeatedPtrField::ReleaseCleared()
Temizlenen havuzdan tek bir öğe kaldırıp sahipliği kaldırarak arayana aktarın.
Öğenin temizleneceği garanti edilir. Gereken: ClearedCount() > 0
Tekrarlanan alan bir arenada olduğunda bu yöntem çağrılamaz. Bu işlem, bir GOOGLE_DTEST başarısızlığını tetikler.
iterator RepeatedPtrField::erase(
const_iterator position)
const_iterator position)
Konumun başvurduğu öğeyi kaldırır.
Kaldırılan öğenin hemen ardından öğeye bir yineleme döndürür.
end() da dahil olmak üzere, kaldırılan öğedeki veya sonraki öğenin tüm tekrarlarını geçersiz kılar.
iterator RepeatedPtrField::erase(
const_iterator first,
const_iterator last)
const_iterator first,
const_iterator last)
[[]İlk, son) aralıktaki öğeleri kaldırır.
Kaldırılan aralığın hemen ardından öğeye döner.
end() dahil olmak üzere, kaldırılan aralıktaki veya sonraki tüm tekrarlayıcıları geçersiz kılar.
void RepeatedPtrField::InternalSwap(
RepeatedPtrField * other)
RepeatedPtrField * other)
Yalnızca şirket içi kullanım içindir.
Oluşturulan kod tarafından çağrıldığı için bu işlem herkese açıktır.