vector
sınıfı
C++ Standart Kitaplık vektör sınıfı, sıralı kapsayıcılar için bir sınıf şablonudur. Vektör, belirli bir türün öğelerini doğrusal bir düzende depolar ve herhangi bir öğeye hızlı rastgele erişim sağlar. Vektör, rastgele erişim performansı premium olduğunda sıra için tercih edilen kapsayıcıdır.
Sözdizimi
template <class Type, class Allocator = allocator<Type>>
class vector;
Parametreler
Type
Vektörde depolanacak öğe veri türü.
Allocator
Vektörün bellek ayırması ve serbest bırakılması hakkındaki ayrıntıları kapsülleyen depolanmış ayırıcı nesnesini temsil eden tür. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değerdir allocator<Type>
.
Açıklamalar
Vektörler, sıranın sonunda sürekli zaman ekleme ve silme işlemlerine izin verir. Bir vektörünün ortasına öğe eklemek veya silmek için doğrusal süre gerekir. Sınıfdeque
, bir dizinin başında ve sonundaki ekleme ve silme işlemlerinde daha hızlıdır. Sınıf list
kapsayıcısı, bir dizi içindeki herhangi bir konumdaki ekleme ve silme işlemlerinde daha hızlıdır.
Vektör yeniden konumlandırma, bir üye işlevinin vektör nesnesinde bulunan sırayı geçerli depolama kapasitesinin ötesinde artırması gerektiğinde oluşur. Diğer eklemeler ve silme işlemleri, dizideki çeşitli depolama adreslerini değiştirebilir. Bu gibi durumlarda, sıranın değiştirilmiş bölümlerini işaret eden yineleyiciler veya başvurular geçersiz hale gelir. Yeniden ayırma gerçekleşmezse, ekleme/silme noktası öncesinde yalnızca yineleyiciler ve başvurular geçerli kalır.
vector<bool>
sınıfı, türündeki bool
öğeler için sınıf şablonu vektörünün tam uzmanlığıdır. Uzmanlık tarafından kullanılan temel tür için bir ayırıcıya sahiptir.
Başvuru vector<bool>
sınıfı , nesneleri bir nesne içindeki öğelere (tek bit) başvuru sağlayabilen iç içe geçmiş bir vector<bool>
sınıftır.
Üyeler
Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
vector |
Belirli bir boyutta veya belirli bir değerin öğeleriyle ya da belirli bir veya başka bir allocator vektörünün kopyası olarak vektör oluşturur. |
Tür tanımları
Veri Akışı Adı | Açıklama |
---|---|
allocator_type |
Vektör nesnesinin sınıfını allocator temsil eden bir tür. |
const_iterator |
Vektördeki bir öğeyi okuyabilen const rastgele erişim yineleyicisi sağlayan bir tür. |
const_pointer |
Vektördeki bir const öğeye işaretçi sağlayan tür. |
const_reference |
Vektörde depolanan bir const öğeye başvuru sağlayan bir tür. İşlemleri okumak ve yapmak const için kullanılır. |
const_reverse_iterator |
Vektördeki herhangi const bir öğeyi okuyabilen rastgele erişim yineleyicisi sağlayan bir tür. |
difference_type |
Bir vektördeki iki öğeye ait adresler arasındaki farkı sağlayan bir tür. |
iterator |
Vektördeki herhangi bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür. |
pointer |
Vektördeki bir öğeye işaretçi sağlayan bir tür. |
reference |
Vektörde depolanan bir öğeye başvuru sağlayan bir tür. |
reverse_iterator |
Ters çevrilmiş vektördeki herhangi bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür. |
size_type |
Bir vektördeki öğe sayısını sayan bir tür. |
value_type |
Vektörde depolanan veri türünü temsil eden bir tür. |
İşlevler
Veri Akışı Adı | Açıklama |
---|---|
assign |
Bir vektör siler ve belirtilen öğeleri boş vektöre kopyalar. |
at |
Vektörde belirtilen konumdaki öğesine başvuru döndürür. |
back |
Vektörünün son öğesine başvuru döndürür. |
begin |
Vektördeki ilk öğeye rastgele erişim yineleyicisi döndürür. |
capacity |
Daha fazla depolama alanı ayırmadan vektörünün içerebileceği öğe sayısını döndürür. |
cbegin |
Vektördeki ilk öğeye rastgele erişim sabit yineleyicisi döndürür. |
cend |
Vektör sonunun hemen ötesine işaret eden rastgele erişimli bir sabit yineleyici döndürür. |
crbegin |
Ters çevrilmiş vektördeki ilk öğeye sabit bir yineleyici döndürür. |
crend |
Ters çevrilmiş vektörünün sonuna sabit bir yineleyici döndürür. |
clear |
Vektör öğelerini siler. |
data |
Vektördeki ilk öğeye bir işaretçi döndürür. |
emplace |
Belirtilen konumda vektöre yerinde inşa edilmiş bir öğe ekler. |
emplace_back |
Vektörünün sonuna yerinde bir öğe ekler. |
empty |
Vektör kapsayıcısının boş olup olmadığını sınar. |
end |
Vektörünün sonuna işaret eden rastgele erişim yineleyicisi döndürür. |
erase |
Vektördeki bir öğeyi veya öğe aralığını belirtilen konumlardan kaldırır. |
front |
Vektördeki ilk öğeye başvuru döndürür. |
get_allocator |
Vektör tarafından kullanılan sınıfına allocator bir nesnesi döndürür. |
insert |
Belirtilen konumda vektöre bir öğe veya çok sayıda öğe ekler. |
max_size |
Vektör uzunluğu üst sınırını döndürür. |
pop_back |
Vektörünün sonundaki öğesini siler. |
push_back |
Vektörünün sonuna bir öğe ekleyin. |
rbegin |
Ters çevrilmiş vektördeki ilk öğeye bir yineleyici döndürür. |
rend |
Ters çevrilmiş vektörünün sonuna bir yineleyici döndürür. |
reserve |
Vektör nesnesi için en düşük depolama uzunluğunu ayırır. |
resize |
Vektör için yeni bir boyut belirtir. |
shrink_to_fit |
Fazla kapasiteyi atar. |
size |
Vektördeki öğelerin sayısını döndürür. |
swap |
İki vektörünün öğelerini değiştirir. |
İşleçler
Veri Akışı Adı | Açıklama |
---|---|
operator[] |
Vektör öğesine belirtilen konumda bir başvuru döndürür. |
operator= |
Vektör öğelerini başka bir vektör kopyasıyla değiştirir. |
allocator_type
Vektör nesnesi için ayırıcı sınıfını temsil eden bir tür.
typedef Allocator allocator_type;
Açıklamalar
allocator_type
, şablon parametresinin Allocator
eş anlamlısıdır.
Örnek
kullanan get_allocator
bir örneğin allocator_type
örneğine bakın.
assign
Bir vektör siler ve belirtilen öğeleri boş vektöre kopyalar.
void assign(size_type count, const Type& value);
void assign(initializer_list<Type> init_list);
template <class InputIterator>
void assign(InputIterator first, InputIterator last);
Parametreler
first
Kopyalanacak öğe aralığındaki ilk öğenin konumu.
last
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.
count
Vektöre eklenen öğenin kopya sayısı.
value
Vektöre eklenen öğenin değeri.
init_list
Eklenecek öğeleri içeren initializer_list.
Açıklamalar
İlk olarak, assign
bir vektördeki mevcut öğeleri siler. Ardından, assign
özgün vektörden belirtilen bir öğe aralığını bir vektöre ekler veya yeni belirtilen değer öğesinin kopyalarını bir vektöre ekler.
Örnek
// vector_assign.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1, v2, v3;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 = ";
for (auto& v : v1)
{
cout << v << " ";
}
cout << endl;
v2.assign(v1.begin(), v1.end());
cout << "v2 = ";
for (auto& v : v2)
{
cout << v << " ";
}
cout << endl;
v3.assign(7, 4);
cout << "v3 = ";
for (auto& v : v3)
{
cout << v << " ";
}
cout << endl;
v3.assign({ 5, 6, 7 });
cout << "v3 = ";
for (auto& v : v3)
{
cout << v << " ";
}
cout << endl;
}
v1 = 10 20 30 40 50
v2 = 10 20 30 40 50
v3 = 4 4 4 4 4 4 4
v3 = 5 6 7
at
Vektörde belirtilen konumdaki öğesine başvuru döndürür.
reference at(size_type position);
const_reference at(size_type position) const;
Parametreler
position
Vektörde başvurulacak öğenin alt indis veya konum numarası.
Dönüş değeri
Bağımsız değişkende alt indislenen öğeye başvuru. Vektör boyutundan büyükse position
, at
bir özel durum oluşturur.
Açıklamalar
dönüş değeri at
bir const_reference
öğesine atanmışsa vektör nesnesi değiştirilemez. dönüş değeri at
bir reference
öğesine atanmışsa vektör nesnesi değiştirilebilir.
Örnek
// vector_at.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
const int &i = v1.at(0);
int &j = v1.at(1);
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20
back
Vektörünün son öğesine başvuru döndürür.
reference back();
const_reference back() const;
Dönüş değeri
Vektörünün son öğesi. Vektör boşsa dönüş değeri tanımsız olur.
Açıklamalar
dönüş değeri back
bir const_reference
öğesine atanmışsa vektör nesnesi değiştirilemez. dönüş değeri back
bir reference
öğesine atanmışsa vektör nesnesi değiştirilebilir.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, boş bir vektördeki bir öğeye erişmeye çalıştığınızda çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli yineleyiciler.
Örnek
// vector_back.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(11);
int& i = v1.back();
const int& ii = v1.front();
cout << "The last integer of v1 is " << i << endl;
i--;
cout << "The next-to-last integer of v1 is " << ii << endl;
}
The last integer of v1 is 11
The next-to-last integer of v1 is 10
begin
Vektördeki ilk öğeye rastgele erişim yineleyicisi döndürür.
const_iterator begin() const;
iterator begin();
Dönüş değeri
veya içindeki vector
ilk öğeyi veya boş vector
bir öğesinin başarılı olduğu konumu ele alan rastgele erişim yineleyicisi. Geçerli olduğundan emin olmak için her zaman ile vector::end
döndürülen değeri karşılaştırın.
Açıklamalar
değerinin dönüş değeri begin
bir vector::const_iterator
vector
öğesine atanmışsa nesnesi değiştirilemez. dönüş değeri begin
bir vector::iterator
vector
öğesine atanmışsa nesnesi değiştirilebilir.
Örnek
// vector_begin.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> c1;
vector<int>::iterator c1_Iter;
vector<int>::const_iterator c1_cIter;
c1.push_back(1);
c1.push_back(2);
cout << "The vector c1 contains elements:";
c1_Iter = c1.begin();
for (; c1_Iter != c1.end(); c1_Iter++)
{
cout << " " << *c1_Iter;
}
cout << endl;
cout << "The vector c1 now contains elements:";
c1_Iter = c1.begin();
*c1_Iter = 20;
for (; c1_Iter != c1.end(); c1_Iter++)
{
cout << " " << *c1_Iter;
}
cout << endl;
// The following line would be an error because iterator is const
// *c1_cIter = 200;
}
The vector c1 contains elements: 1 2
The vector c1 now contains elements: 20 2
capacity
Daha fazla depolama alanı ayırmadan vektörünün içerebileceği öğe sayısını döndürür.
size_type capacity() const;
Dönüş değeri
Vektör için ayrılan geçerli depolama uzunluğu.
Açıklamalar
Üye işlevi resize
, buna uyum sağlamak için yeterli bellek ayrılırsa daha verimli olur. Ayrılan bellek miktarını belirtmek için üye işlevini reserve
kullanın.
Örnek
// vector_capacity.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(1);
cout << "The length of storage allocated is "
<< v1.capacity() << "." << endl;
v1.push_back(2);
cout << "The length of storage allocated is now "
<< v1.capacity() << "." << endl;
}
The length of storage allocated is 1.
The length of storage allocated is now 2.
cbegin
Aralıktaki ilk öğeyi ele alan bir const
yineleyici döndürür.
const_iterator cbegin() const;
Dönüş değeri
Aralığın const
ilk öğesini veya boş aralığın sonunun hemen ötesindeki konumu işaret eden rastgele erişim yineleyicisi (boş aralık için). cbegin() == cend()
Açıklamalar
değerinin cbegin
dönüş değeriyle, aralıktaki öğeler değiştirilemez.
Dönüş değerinin olduğunu begin()
garanti etmek için üye işlevinin const_iterator
yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi içinde tür kesinti anahtar sözcüğüyle auto
birlikte kullanılır. Örnekte, ve Container
destekleyen herhangi bir türde const
değiştirilebilir (non- begin()
) kapsayıcısı olduğunu düşününcbegin()
.
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
const
Vektörünün son öğesini izleyen öğeye işaret eden bir son son yineleyici döndürür.
const_iterator cend() const;
Dönüş değeri
const
Vektör için bir son geçmiş yineleyici. Vektörünün son öğesini izleyen öğeye işaret eder. Bu öğe bir yer tutucudur ve başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın. Vektör boşsa, öğesini seçin vector::cend() == vector::cbegin()
.
Açıklamalar
cend
bir yineleyicinin aralığının sonunu geçip geçmediğini test etmek için kullanılır.
Dönüş değerinin olduğunu end()
garanti etmek için üye işlevinin const_iterator
yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi tür kesinti anahtar sözcüğüyle auto
birlikte kullanılır. Örnekte, ve Container
destekleyen herhangi bir türde const
değiştirilebilir (non- end()
) kapsayıcısı olduğunu düşününcend()
.
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
tarafından cend
döndürülen değer başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın.
clear
Vektör öğelerini siler.
void clear();
Örnek
// vector_clear.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
cout << "The size of v1 is " << v1.size() << endl;
v1.clear();
cout << "The size of v1 after clearing is " << v1.size() << endl;
}
The size of v1 is 3
The size of v1 after clearing is 0
const_iterator
Vektördeki bir öğeyi okuyabilen const
rastgele erişim yineleyicisi sağlayan bir tür.
typedef implementation-defined const_iterator;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür const_iterator
kullanılamaz.
Örnek
kullanan bir örnek için const_iterator
örneğine bakın.
const_pointer
Vektördeki bir const
öğeye işaretçi sağlayan tür.
typedef typename Allocator::const_pointer const_pointer;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür const_pointer
kullanılamaz.
Yineleyici daha yaygın olarak bir vektör öğesine erişmek için kullanılır.
const_reference
Vektörde depolanan bir const
öğeye başvuru sağlayan bir tür. İşlemleri okumak ve yapmak const
için kullanılır.
typedef typename Allocator::const_reference const_reference;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür const_reference
kullanılamaz.
Örnek
// vector_const_ref.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
const vector<int> v2 = v1;
const int& i = v2.front();
const int& j = v2.back();
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
// The following line would cause an error as v2 is const
// v2.push_back(30);
}
The first element is 10
The second element is 20
const_reverse_iterator
Vektördeki herhangi const
bir öğeyi okuyabilen rastgele erişim yineleyicisi sağlayan bir tür.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Açıklamalar
Bir tür const_reverse_iterator
bir öğenin değerini değiştiremez ve vektörde tersten yinelemek için kullanılır.
Örnek
Yineleyici bildirme ve kullanma örneği için bkz rbegin
.
crbegin
Ters çevrilmiş vektördeki ilk öğeye sabit bir yineleyici döndürür.
const_reverse_iterator crbegin() const;
Dönüş değeri
Ters çevrilmiş vector
bir içindeki ilk öğeyi veya ters çevrilmemiş vector
içindeki son öğeyi ele alan sabit bir ters rastgele erişim yineleyicisi.
Açıklamalar
dönüş değeriyle crbegin
vector
nesne değiştirilemez.
Örnek
// vector_crbegin.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator v1_Iter;
vector<int>::const_reverse_iterator v1_rIter;
v1.push_back(1);
v1.push_back(2);
v1_Iter = v1.begin();
cout << "The first element of vector is "
<< *v1_Iter << "." << endl;
v1_rIter = v1.crbegin();
cout << "The first element of the reversed vector is "
<< *v1_rIter << "." << endl;
}
The first element of vector is 1.
The first element of the reversed vector is 2.
crend
const
Ters çevrilmiş vektörünün son öğesini izleyen öğeye işaret eden bir geçmiş uç ters yineleyici döndürür.
const_reverse_iterator crend() const;
Dönüş değeri
const
Ters çevrilmiş vektör için arka uç yineleyicisi. Ters çevrilmiş vektörünün son öğesini izleyen öğeye işaret eder. Bu öğe, ters çevrilmeyen vektörünün ilk öğesinden önceki öğeyle aynıdır. Bu öğe bir yer tutucudur ve başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın.
Açıklamalar
crend
, ile kullanıldığı gibi vector
ters çevrilmiş vector::cend
bir vector
ile kullanılır.
dönüş değeri crend
(uygun şekilde azalmış) vector
ile nesne değiştirilemez.
crend
, ters yineleyicinin sonuna vector
ulaşıp ulaşmadığını test etmek için kullanılabilir.
tarafından crend
döndürülen değer başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın.
Örnek
// vector_crend.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::const_reverse_iterator v1_rIter;
v1.push_back(1);
v1.push_back(2);
for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++)
cout << *v1_rIter << endl;
}
2
1
data
Vektördeki ilk öğeye bir işaretçi döndürür.
const_pointer data() const;
pointer data();
Dönüş değeri
boş vector
bir öğesinin başarılı olduğu veya konumundaki ilk öğeye vector
yönelik bir işaretçi.
Örnek
// vector_data.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> c1;
vector<int>::pointer c1_ptr;
vector<int>::const_pointer c1_cPtr;
c1.push_back(1);
c1.push_back(2);
cout << "The vector c1 contains elements:";
c1_cPtr = c1.data();
for (size_t n = c1.size(); 0 < n; --n, c1_cPtr++)
{
cout << " " << *c1_cPtr;
}
cout << endl;
cout << "The vector c1 now contains elements:";
c1_ptr = c1.data();
*c1_ptr = 20;
for (size_t n = c1.size(); 0 < n; --n, c1_ptr++)
{
cout << " " << *c1_ptr;
}
cout << endl;
}
The vector c1 contains elements: 1 2
The vector c1 now contains elements: 20 2
difference_type
Aynı vektör içindeki öğelere başvuran iki yineleyici arasındaki farkı sağlayan bir tür.
typedef typename Allocator::difference_type difference_type;
Açıklamalar
bir difference_type
öğe işaretçisi kendi adresini içerdiğinden, iki işaretçi arasındaki öğe sayısı olarak da tanımlanabilir.
Yineleyici daha yaygın olarak bir vektör öğesine erişmek için kullanılır.
Örnek
// vector_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
using namespace std;
vector<int> c1;
vector<int>::iterator c1_Iter, c2_Iter;
c1.push_back(30);
c1.push_back(20);
c1.push_back(30);
c1.push_back(10);
c1.push_back(30);
c1.push_back(20);
c1_Iter = c1.begin();
c2_Iter = c1.end();
vector<int>::difference_type df_typ1, df_typ2, df_typ3;
df_typ1 = count(c1_Iter, c2_Iter, 10);
df_typ2 = count(c1_Iter, c2_Iter, 20);
df_typ3 = count(c1_Iter, c2_Iter, 30);
cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
}
The number '10' is in c1 collection 1 times.
The number '20' is in c1 collection 2 times.
The number '30' is in c1 collection 3 times.
emplace
Belirtilen konumda vektöre yerinde inşa edilmiş bir öğe ekler.
template <class... Types>
iterator emplace(
const_iterator position,
Types&&... args);
Parametreler
position
İlk öğenin eklendiği konum vector
.
args
Oluşturucu bağımsız değişkenleri. işlevi, sağlanan bağımsız değişkenlere göre çağrılacak oluşturucu aşırı yüklemesini çıkarsar.
Dönüş değeri
işlevi, yeni öğenin içine eklendiği vector
konumu gösteren bir yineleyici döndürür.
Açıklamalar
Herhangi bir ekleme işlemi pahalı olabilir. Performans tartışması için bkzvector
. sınıf.vector
Örnek
// vector_emplace.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator Iter;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
// initialize a vector of vectors by moving v1
vector<vector<int>> vv1;
vv1.emplace(vv1.begin(), move(v1));
if (vv1.size() != 0 && vv1[0].size() != 0)
{
cout << "vv1[0] =";
for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++)
cout << " " << *Iter;
cout << endl;
}
}
v1 = 10 20 30
vv1[0] = 10 20 30
emplace_back
Vektörünün sonuna yerinde bir öğe ekler.
template <class... Types>
void emplace_back(Types&&... args);
Parametreler
args
Oluşturucu bağımsız değişkenleri. işlevi, sağlanan bağımsız değişkenlere göre çağrılacak oluşturucu aşırı yüklemesini çıkarsar.
Örnek
#include <vector>
struct obj
{
obj(int, double) {}
};
int main()
{
std::vector<obj> v;
v.emplace_back(1, 3.14); // obj in created in place in the vector
}
empty
Vektör boş olup olmadığını sınar.
bool empty() const;
Dönüş değeri
true
vektör boşsa; false
vektör boş değilse.
Örnek
// vector_empty.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
if (v1.empty())
cout << "The vector is empty." << endl;
else
cout << "The vector is not empty." << endl;
}
The vector is not empty.
end
Vektörünün son öğesini izleyen öğeye işaret eden bir son son yineleyici döndürür.
iterator end();
const_iterator end() const;
Dönüş değeri
Vektör için bir son geçmiş yineleyici. Vektörünün son öğesini izleyen öğeye işaret eder. Bu öğe bir yer tutucudur ve başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın. Vektör boşsa, öğesini seçin vector::end() == vector::begin()
.
Açıklamalar
dönüş değeri end
türünde const_iterator
bir değişkene atanmışsa vektör nesnesi değiştirilemez. dönüş değeri end
türünde iterator
bir değişkene atanmışsa vektör nesnesi değiştirilebilir.
Örnek
// vector_end.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator v1_Iter;
v1.push_back(1);
v1.push_back(2);
for (v1_Iter = v1.begin(); v1_Iter != v1.end(); v1_Iter++)
cout << *v1_Iter << endl;
}
1
2
erase
Vektördeki bir öğeyi veya öğe aralığını belirtilen konumlardan kaldırır.
iterator erase(
const_iterator position);
iterator erase(
const_iterator first,
const_iterator last);
Parametreler
position
Vektörden kaldırılacak öğenin konumu.
first
Vektörden kaldırılan ilk öğenin konumu.
last
Vektörden kaldırılan son öğenin hemen ötesindeki konum.
Dönüş değeri
Kaldırılan öğelerin ötesinde kalan ilk öğeyi belirten bir yineleyici veya böyle bir öğe yoksa vektörünün sonuna bir işaretçi.
Örnek
// vector_erase.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator Iter;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
v1.erase(v1.begin());
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
v1.erase(v1.begin() + 1, v1.begin() + 3);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
}
v1 = 10 20 30 40 50
v1 = 20 30 40 50
v1 = 20 50
front
Vektördeki ilk öğeye başvuru döndürür.
reference front();
const_reference front() const;
Dönüş değeri
Vektör nesnesindeki ilk öğeye başvuru. Vektör boşsa, dönüş tanımsız olur.
Açıklamalar
dönüş değeri front
bir const_reference
öğesine atanmışsa vektör nesnesi değiştirilemez. dönüş değeri front
bir reference
öğesine atanmışsa vektör nesnesi değiştirilebilir.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, boş bir vektördeki bir öğeye erişmeye çalıştığınızda çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli yineleyiciler.
Örnek
// vector_front.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(11);
int& i = v1.front();
cout << "The first integer of v1 is " << i << endl;
// by incrementing i, we move the front reference to the second element
i++;
cout << "Now, the first integer of v1 is " << i << endl;
}
The first integer of v1 is 10
Now, the first integer of v1 is 11
get_allocator
Vektör oluşturmak için kullanılan ayırıcı nesnesinin bir kopyasını döndürür.
Allocator get_allocator() const;
Dönüş değeri
Vektör tarafından kullanılan ayırıcı.
Açıklamalar
Vektör sınıfı için ayırıcılar, sınıfın depolamayı nasıl yöneteceğini belirtir. C++ Standart Kitaplığı kapsayıcı sınıfları ile sağlanan varsayılan ayırıcılar çoğu programlama gereksinimi için yeterlidir. Kendi ayırıcı sınıfınızı yazmak ve kullanmak gelişmiş bir C++ özelliğidir.
Örnek
// vector_get_allocator.cpp
// compile with: /EHsc
#include <vector>
int main()
{
using namespace std;
// The following lines declare objects that use the default allocator.
vector<int> v1;
vector<int, allocator<int>> v2 = vector<int, allocator<int>>(allocator<int>());
// v3 will use the same allocator class as v1
vector<int> v3(v1.get_allocator());
vector<int>::allocator_type xvec = v3.get_allocator();
// You can now call functions on the allocator class used by vec
}
insert
Belirtilen konumda vektöre bir öğe veya birçok öğe ya da öğe aralığı ekler.
iterator insert(
const_iterator position,
const Type& value);
iterator insert(
const_iterator position,
Type&& value);
void insert(
const_iterator position,
size_type count,
const Type& value);
template <class InputIterator>
void insert(
const_iterator position,
InputIterator first,
InputIterator last);
Parametreler
position
Vektörde ilk öğenin eklendiği konum.
value
Vektöre eklenen öğenin değeri.
count
Vektöre eklenen öğelerin sayısı.
first
Kopyalanacak öğe aralığındaki ilk öğenin konumu.
last
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.
Dönüş değeri
İlk iki insert
işlev, yeni öğenin vektöre eklendiği konumu gösteren bir yineleyici döndürür.
Açıklamalar
Bir önkoşul olarak ve first
last
vektörde yineleyici olmamalıdır veya davranış tanımlanmamıştır. Herhangi bir ekleme işlemi pahalı olabilir. Performans tartışması için bkzvector
. sınıf.vector
Örnek
// vector_insert.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator Iter;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
v1.insert(v1.begin() + 1, 40);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
v1.insert(v1.begin() + 2, 4, 50);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
const auto v2 = v1;
v1.insert(v1.begin() + 1, v2.begin() + 2, v2.begin() + 4);
cout << "v1 =";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << " " << *Iter;
cout << endl;
// initialize a vector of vectors by moving v1
vector<vector<int>> vv1;
vv1.insert(vv1.begin(), move(v1));
if (vv1.size() != 0 && vv1[0].size() != 0)
{
cout << "vv1[0] =";
for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++)
cout << " " << *Iter;
cout << endl;
}
}
v1 = 10 20 30
v1 = 10 40 20 30
v1 = 10 40 50 50 50 50 20 30
v1 = 10 50 50 40 50 50 50 50 20 30
vv1[0] = 10 50 50 40 50 50 50 50 20 30
iterator
Vektördeki herhangi bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür.
typedef implementation-defined iterator;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür iterator
kullanılabilir.
Örnek
örneğine begin
bakın.
max_size
Vektör uzunluğu üst sınırını döndürür.
size_type max_size() const;
Dönüş değeri
Vektörünün mümkün olan en uzun uzunluğu.
Örnek
// vector_max_size.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::size_type i;
i = v1.max_size();
cout << "The maximum possible length of the vector is " << i << "." << endl;
}
The maximum possible length of the vector is 4611686018427387903.
operator[]
Vektör öğesine belirtilen konumda bir başvuru döndürür.
reference operator[](size_type position);
const_reference operator[](size_type position) const;
Parametreler
position
Vektör öğesinin konumu.
Dönüş değeri
Belirtilen konum kapsayıcısının boyutuna eşit veya ondan daha büyük ise, sonuç tanımsızdır.
Açıklamalar
dönüş değeri operator[]
bir const_reference
öğesine atanmışsa vektör nesnesi değiştirilemez. dönüş değeri operator[]
bir başvuruya atanmışsa vektör nesnesi değiştirilebilir.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, vektör sınırlarının dışındaki bir öğeye erişmeye çalıştığınızda bir çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli yineleyiciler.
Örnek
// vector_op_ref.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
int& i = v1[1];
cout << "The second integer of v1 is " << i << endl;
}
The second integer of v1 is 20
operator=
Vektör öğelerini başka bir vektör kopyasıyla değiştirir.
vector& operator=(const vector& right);
vector& operator=(vector&& right);
Parametreler
right
içine vector
kopyalanan vector
.
Açıklamalar
bir vector
içindeki mevcut öğeleri sildikten sonra içindekileri operator=
right
kopyalar veya içine vector
taşır.
Örnek
// vector_operator_as.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1, v2, v3;
vector<int>::iterator iter;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 = ";
for (iter = v1.begin(); iter != v1.end(); iter++)
cout << *iter << " ";
cout << endl;
v2 = v1;
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << *iter << " ";
cout << endl;
// move v1 into v2
v2.clear();
v2 = move(v1);
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << *iter << " ";
cout << endl;
}
v1 = 10 20 30 40 50
v2 = 10 20 30 40 50
v2 = 10 20 30 40 50
pointer
Vektördeki bir öğeye işaretçi sağlayan bir tür.
typedef typename Allocator::pointer pointer;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür pointer
kullanılabilir.
Örnek
// vector_pointer.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v;
v.push_back(11);
v.push_back(22);
vector<int>::pointer ptr = &v[0];
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
*ptr = 44;
cout << *ptr << endl;
}
11
22
44
pop_back
Vektörünün sonundaki öğesini siler.
void pop_back();
Açıklamalar
Kod örneği için bkz . vector::p ush_back().
push_back
Vektörünün sonuna bir öğe ekler.
void push_back(const T& value);
void push_back(T&& value);
Parametreler
value
Vektörünün sonuna eklenen öğeye atanacak değer.
Örnek
// compile with: /EHsc /W4
#include <vector>
#include <iostream>
using namespace std;
template <typename T>
void print_elem(const T& t)
{
cout << "(" << t << ") ";
}
template <typename T>
void print_collection(const T& t)
{
cout << " " << t.size() << " elements: ";
for (const auto& p : t)
{
print_elem(p);
}
cout << endl;
}
int main()
{
vector<int> v;
for (int i = 0; i < 10; ++i)
{
v.push_back(10 + i);
}
cout << "vector data: " << endl;
print_collection(v);
// pop_back() until it's empty, printing the last element as we go
while (v.begin() != v.end())
{
cout << "v.back(): ";
print_elem(v.back());
cout << endl;
v.pop_back();
}
}
vector data:
10 elements: (10) (11) (12) (13) (14) (15) (16) (17) (18) (19)
v.back(): (19)
v.back(): (18)
v.back(): (17)
v.back(): (16)
v.back(): (15)
v.back(): (14)
v.back(): (13)
v.back(): (12)
v.back(): (11)
v.back(): (10)
rbegin
Ters çevrilmiş vektördeki ilk öğeye bir yineleyici döndürür.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Dönüş değeri
Ters çevrilmiş bir vektördeki ilk öğeyi veya ters çevrilmeyen vektördeki son öğeyi ele alan ters rastgele erişim yineleyicisi.
Açıklamalar
dönüş değeri rbegin
bir const_reverse_iterator
öğesine atanmışsa vektör nesnesi değiştirilemez. dönüş değeri rbegin
bir reverse_iterator
öğesine atanmışsa vektör nesnesi değiştirilebilir.
Örnek
// vector_rbegin.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::iterator v1_Iter;
vector<int>::reverse_iterator v1_rIter;
v1.push_back(1);
v1.push_back(2);
v1_Iter = v1.begin();
cout << "The first element of vector is "
<< *v1_Iter << "." << endl;
v1_rIter = v1.rbegin();
cout << "The first element of the reversed vector is "
<< *v1_rIter << "." << endl;
}
The first element of vector is 1.
The first element of the reversed vector is 2.
reference
Vektörde depolanan bir öğeye başvuru sağlayan bir tür.
typedef typename Allocator::reference reference;
Örnek
Vektör sınıfında nasıl kullanılacağına at
ilişkin bir örnek için bkzreference
.
rend
Ters çevrilmiş vektörünün son öğesini izleyen öğeye işaret eden bir geçmiş uç ters yineleyici döndürür.
const_reverse_iterator rend() const;
reverse_iterator rend();
Dönüş değeri
Ters çevrilmiş vektör için arka uç yineleyicisi. Ters çevrilmiş vektörünün son öğesini izleyen öğeye işaret eder. Bu öğe, ters çevrilmeyen vektörünün ilk öğesinden önceki öğeyle aynıdır. Bu öğe bir yer tutucudur ve başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın.
Açıklamalar
rend
aynı vektörde kullanıldığı gibi end
ters çevrilmiş bir vektörle kullanılır.
dönüş değeri rend
öğesine const_reverse_iterator
atanmışsa vektör nesnesi değiştirilemez. dönüş değeri rend
öğesine reverse_iterator
atanmışsa vektör nesnesi değiştirilebilir.
rend
bir ters yineleyicinin vektörünün sonuna ulaşıp ulaşmadığını test etmek için kullanılabilir.
tarafından rend
döndürülen değer başvurulmamalıdır. Bunu yalnızca karşılaştırmalar için kullanın.
Örnek
// vector_rend.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::reverse_iterator v1_rIter;
v1.push_back(1);
v1.push_back(2);
for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++)
cout << *v1_rIter << endl;
}
2
1
reserve
Bir vektör nesnesi için en düşük depolama uzunluğunu ayırarak gerekirse alan ayırır.
void reserve(size_type count);
Parametreler
count
Vektör için ayrılacak en düşük depolama uzunluğu.
Örnek
// vector_reserve.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(1);
cout << "Current capacity of v1 = "
<< v1.capacity() << endl;
v1.reserve(20);
cout << "Current capacity of v1 = "
<< v1.capacity() << endl;
}
Current capacity of v1 = 1
Current capacity of v1 = 20
resize
Vektör için yeni bir boyut belirtir.
void resize(size_type new_size);
void resize(size_type new_size, Type value);
Parametreler
new_size
Vektörünün yeni boyutu.
value
Yeni boyut özgün boyuttan daha büyükse vektöre eklenen yeni öğelerin başlatma değeri. Değer atlanırsa, yeni nesneler varsayılan oluşturucularını kullanır.
Açıklamalar
Kapsayıcının boyutu istenen boyuttan küçükse, new_size
resize
istenen boyuta ulaşana kadar vektöre öğeleri ekler. Kapsayıcının boyutu istenen boyuttan büyük olduğunda, resize
boyutuna new_size
ulaşana kadar kapsayıcının sonuna en yakın öğeleri siler. Kapsayıcının mevcut boyutu istenen boyutla aynıysa hiçbir işlem yapılmaz.
size
vektörünün geçerli boyutunu yansıtır.
Örnek
// vectorsizing.cpp
// compile with: /EHsc /W4
// Illustrates vector::reserve, vector::max_size,
// vector::resize, vector::resize, and vector::capacity.
//
// Functions:
//
// vector::max_size - Returns maximum number of elements vector could
// hold.
//
// vector::capacity - Returns number of elements for which memory has
// been allocated.
//
// vector::size - Returns number of elements in the vector.
//
// vector::resize - Reallocates memory for vector, preserves its
// contents if new size is larger than existing size.
//
// vector::reserve - Allocates elements for vector to ensure a minimum
// size, preserving its contents if the new size is
// larger than existing size.
//
// vector::push_back - Appends (inserts) an element to the end of a
// vector, allocating memory for it if necessary.
//
//////////////////////////////////////////////////////////////////////
// The debugger cannot handle symbols more than 255 characters long.
// The C++ Standard Library often creates symbols longer than that.
// The warning can be disabled:
//#pragma warning(disable:4786)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template <typename C>
void print(const string& s, const C& c)
{
cout << s;
for (const auto& e : c)
{
cout << e << " ";
}
cout << endl;
}
void printvstats(const vector<int>& v)
{
cout << " the vector's size is: " << v.size() << endl;
cout << " the vector's capacity is: " << v.capacity() << endl;
cout << " the vector's maximum size is: " << v.max_size() << endl;
}
int main()
{
// declare a vector that begins with 0 elements.
vector<int> v;
// Show statistics about vector.
cout << "After declaring an empty vector:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
// Add one element to the end of the vector.
v.push_back(-1);
cout << endl << "After adding an element:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
for (int i = 1; i < 10; ++i)
{
v.push_back(i);
}
cout << endl << "After adding 10 elements:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(6);
cout << endl << "After resizing to 6 elements without an initialization value:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(9, 999);
cout << endl << "After resizing to 9 elements with an initialization value of 999:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
v.resize(12);
cout << endl << "After resizing to 12 elements without an initialization value:" << endl;
printvstats(v);
print(" the vector's contents: ", v);
// Ensure there's room for at least 1000 elements.
v.reserve(1000);
cout << endl << "After vector::reserve(1000):" << endl;
printvstats(v);
// Ensure there's room for at least 2000 elements.
v.resize(2000);
cout << endl << "After vector::resize(2000):" << endl;
printvstats(v);
}
After declaring an empty vector:
the vector's size is: 0
the vector's capacity is: 0
the vector's maximum size is: 4611686018427387903
the vector's contents:
After adding an element:
the vector's size is: 1
the vector's capacity is: 1
the vector's maximum size is: 4611686018427387903
the vector's contents: -1
After adding 10 elements:
the vector's size is: 10
the vector's capacity is: 13
the vector's maximum size is: 4611686018427387903
the vector's contents: -1 1 2 3 4 5 6 7 8 9
After resizing to 6 elements without an initialization value:
the vector's size is: 6
the vector's capacity is: 13
the vector's maximum size is: 4611686018427387903
the vector's contents: -1 1 2 3 4 5
After resizing to 9 elements with an initialization value of 999:
the vector's size is: 9
the vector's capacity is: 13
the vector's maximum size is: 4611686018427387903
the vector's contents: -1 1 2 3 4 5 999 999 999
After resizing to 12 elements without an initialization value:
the vector's size is: 12
the vector's capacity is: 13
the vector's maximum size is: 4611686018427387903
the vector's contents: -1 1 2 3 4 5 999 999 999 0 0 0
After vector::reserve(1000):
the vector's size is: 12
the vector's capacity is: 1000
the vector's maximum size is: 4611686018427387903
After vector::resize(2000):
the vector's size is: 2000
the vector's capacity is: 2000
the vector's maximum size is: 4611686018427387903
reverse_iterator
Ters çevrilmiş vektördeki herhangi bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür.
typedef std::reverse_iterator<iterator> reverse_iterator;
Açıklamalar
Vektörde tersten yinelemek için bir tür reverse_iterator
kullanılır.
Örnek
örneğine rbegin
bakın.
shrink_to_fit
Fazla kapasiteyi atar.
void shrink_to_fit();
Örnek
// vector_shrink_to_fit.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
v1.push_back(1);
cout << "Current capacity of v1 = "
<< v1.capacity() << endl;
v1.reserve(20);
cout << "Current capacity of v1 = "
<< v1.capacity() << endl;
v1.shrink_to_fit();
cout << "Current capacity of v1 = "
<< v1.capacity() << endl;
}
Current capacity of v1 = 1
Current capacity of v1 = 20
Current capacity of v1 = 1
size
Vektördeki öğelerin sayısını döndürür.
size_type size() const;
Dönüş değeri
Vektörünün geçerli uzunluğu.
Örnek
// vector_size.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1;
vector<int>::size_type i;
v1.push_back(1);
i = v1.size();
cout << "Vector length is " << i << "." << endl;
v1.push_back(2);
i = v1.size();
cout << "Vector length is now " << i << "." << endl;
}
Vector length is 1.
Vector length is now 2.
size_type
Bir vektördeki öğe sayısını sayan bir tür.
typedef typename Allocator::size_type size_type;
Örnek
örneğine capacity
bakın.
swap
İki vektörünün öğelerini değiştirir.
void swap(
vector<Type, Allocator>& right);
friend void swap(
vector<Type, Allocator>& left,
vector<Type, Allocator>& right);
Parametreler
right
Değiştirilecek öğeleri sağlayan bir vektör. Veya, öğeleri vektördeki öğelerle değiştirilecek bir vektör left
.
left
Öğeleri vektördeki öğelerle değiştirilecek bir vektör right
.
Örnek
// vector_swap.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> v1, v2;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v2.push_back(10);
v2.push_back(20);
cout << "The number of elements in v1 = " << v1.size() << endl;
cout << "The number of elements in v2 = " << v2.size() << endl;
cout << endl;
v1.swap(v2);
cout << "The number of elements in v1 = " << v1.size() << endl;
cout << "The number of elements in v2 = " << v2.size() << endl;
}
The number of elements in v1 = 3
The number of elements in v2 = 2
The number of elements in v1 = 2
The number of elements in v2 = 3
value_type
Vektörde depolanan veri türünü temsil eden bir tür.
typedef typename Allocator::value_type value_type;
Açıklamalar
value_type
, şablon parametresinin Type
eş anlamlısıdır.
Örnek
// vector_value_type.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int>::value_type AnInt;
AnInt = 44;
cout << AnInt << endl;
}
44
vector
Bir vektör oluşturur. Aşırı yüklemeler belirli bir boyutta veya belirli bir değerin öğeleriyle bir vektör oluşturur. Ya da başka bir vektörünün tamamının veya bir bölümünün kopyası olarak. Bazı aşırı yüklemeler, kullanılacak ayırıcıyı belirtmenize de olanak sağlar.
vector();
explicit vector(const Allocator& allocator);
explicit vector(size_type count);
vector(size_type count, const Type& value);
vector(size_type count, const Type& value, const Allocator& allocator);
vector(const vector& source);
vector(vector&& source);
vector(initializer_list<Type> init_list, const Allocator& allocator);
template <class InputIterator>
vector(InputIterator first, InputIterator last);
template <class InputIterator>
vector(InputIterator first, InputIterator last, const Allocator& allocator);
Parametreler
allocator
Bu nesneyle kullanılacak kaynak ayırıcı sınıfı.
get_allocator
nesnesi için ayırıcı sınıfını döndürür.
count
Yapılı vektördeki öğelerin sayısı.
value
Yapılı vektördeki öğelerin değeri.
source
Oluşturulacak vektör bir kopya olacaktır.
first
Kopyalanacak öğe aralığındaki ilk öğenin konumu.
last
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.
init_list
initializer_list
Kopyalanacak öğeleri içeren.
Açıklamalar
Tüm oluşturucular bir ayırıcı nesnesi (allocator
) depolar ve vektörünü başlatır.
İlk iki oluşturucu boş bir başlangıç vektöru belirtir. İkinci oluşturucu, kullanılacak ayırıcı türünü (allocator
) açıkça belirtir.
Üçüncü oluşturucu, sınıfı count
için varsayılan değerde belirtilen sayıda (Type
) öğe yinelemesini belirtir.
Dördüncü ve beşinci oluşturucular değerinin count
(value
) öğelerinin tekrarını belirtir.
Altıncı oluşturucu vektörünün source
bir kopyasını belirtir.
Yedinci oluşturucu vektöründe source
hareket eder.
Sekizinci oluşturucu, öğeleri belirtmek için bir initializer_list kullanır.
Dokuzuncu ve onuncu oluşturucular bir vektörünün [first
, last
) aralığını kopyalar.
Örnek
// vector_ctor.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int>::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter;
// Create an empty vector v0
vector<int> v0;
// Create a vector v1 with 3 elements of default value 0
vector<int> v1(3);
// Create a vector v2 with 5 elements of value 2
vector<int> v2(5, 2);
// Create a vector v3 with 3 elements of value 1 and with the allocator
// of vector v2
vector<int> v3(3, 1, v2.get_allocator());
// Create a copy, vector v4, of vector v2
vector<int> v4(v2);
// Create a new temporary vector for demonstrating copying ranges
vector<int> v5(5);
for (auto i : v5)
{
v5[i] = i;
}
// Create a vector v6 by copying the range v5[ first, last)
vector<int> v6(v5.begin() + 1, v5.begin() + 3);
cout << "v1 =";
for (auto& v : v1)
{
cout << " " << v;
}
cout << endl;
cout << "v2 =";
for (auto& v : v2)
{
cout << " " << v;
}
cout << endl;
cout << "v3 =";
for (auto& v : v3)
{
cout << " " << v;
}
cout << endl;
cout << "v4 =";
for (auto& v : v4)
{
cout << " " << v;
}
cout << endl;
cout << "v5 =";
for (auto& v : v5)
{
cout << " " << v;
}
cout << endl;
cout << "v6 =";
for (auto& v : v6)
{
cout << " " << v;
}
cout << endl;
// Move vector v2 to vector v7
vector<int> v7(move(v2));
vector<int>::iterator v7_Iter;
cout << "v7 =";
for (auto& v : v7)
{
cout << " " << v;
}
cout << endl;
cout << "v8 =";
vector<int> v8{ { 1, 2, 3, 4 } };
for (auto& v : v8)
{
cout << " " << v;
}
cout << endl;
}
v1 = 0 0 0
v2 = 2 2 2 2 2
v3 = 1 1 1
v4 = 2 2 2 2 2
v5 = 0 0 0 0 0
v6 = 0 0
v7 = 2 2 2 2 2
v8 = 1 2 3 4
Ayrıca bkz.
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu