C++.Coding.Standards.1918.Rules.Guidelines [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

C++.Coding.Standards.1918.Rules.Guidelines [Electronic resources] - نسخه متنی

Herb Sutter, Andrei Alexandrescu

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید


Examples


Example 1:

vector::insert.
Let's say you want to add

n elements into a

vector v . Calling

v.insert(position,x) repeatedly can cause multiple reallocations as

v grows its storage to accommodate each new element. Worse, each single-element

insert is a linear operation because it has to shuffle over enough elements to make room, and this makes inserting

n elements with repeated calls to the single-element

insert actually a quadratic operation! Of course, you could get around the multiple-reallocation problem by calling

reserve , but that doesn't reduce the shuffling and the quadratic nature of the operation. It's faster and simpler to just say what you're doing:

v.insert(position,first,last) , where

first and

last are iterators delimiting the range of elements to be added into

v . (If

first and

last are input iterators, there's no way to determine the size of the range before actually traversing it, and therefore

v might still need to perform multiple reallocations; but the range version is still likely to perform better than inserting elements individually.)

Example 2: Range construction and assignment.
Calling a constructor (or

assign function) that takes an iterator range typically performs better than calling the default constructor (or

clear ) followed by individual insertions into the container.


/ 521