CODE:
struct Stringdata
{
// Length of data in buffer.
size_t len;
// Allocated size of buffer.
size_t alc;
// Buffer.
char data[1];
};
typedef std::list<Stringdata*> Stringdata_list;
Stringdata_list strings_;
Stringdata *psd = this->strings_.front();
//...
if (len > psd->alc - psd->len)
alc = sizeof(Stringdata) + buffer_size;
else
{
char* ret = psd->data + psd->len;
memcpy(ret, s, len - sizeof(Stringpool_char));
memset(ret + len - sizeof(Stringpool_char), 0,
sizeof(Stringpool_char));
psd->len += len;
return reinterpret_cast<const Stringpool_char*>(ret);
}
In dem Codebeispiel oben eingeführt wird, habe ich in der sonstEine Frage zu Element in STL Liste
Zweig über die Operationen verwechselt.
Erzeugt es ein neues Element und fügt es nach dem Frontelement ein oder fügt einfach ein neues Element in das erste Element der Liste ein?
Es ist eine Liste von Zeigern, so wird es modifiziert das Ding von der Element-Front-Liste hingewiesen. –
@Neil: Wenn die neue Liste iteriert wird, muss sich die modifizierte Liste um das erste Element kümmern oder wie gewohnt iterieren? – Kim
@Neil, ja, aber dies sollte die Struktur der Liste in Bezug auf die Reihenfolge nicht beeinflussen. Das scheint der OP zu sein. – JaredPar