Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A C++ standard kódtár vektorosztálya a sorozattárolók osztálysablonja. A vektorok egy adott típusú elemeket lineáris elrendezésben tárolnak, és lehetővé teszik a gyors véletlenszerű hozzáférést bármely elemhez. A vektor a sorozatok előnyben részesített tárolója, ha a véletlenszerű hozzáférésű teljesítmény prémium szinten van.
Szintaxis
template <class Type, class Allocator = allocator<Type>>
class vector;
Paraméterek
Type
A vektorban tárolandó elem adattípusa.
Allocator
Az a típus, amely a tárolt kiosztó objektumot jelöli, amely a vektor memóriafoglalásának és felszabadításának részleteit foglalja magában. Ez az argumentum nem kötelező, és az alapértelmezett érték allocator<Type>.
Megjegyzések
A vektorok lehetővé teszik az állandó idő beszúrását és törlését a sorozat végén. A vektor közepén lévő elemek beszúrása vagy törlése lineáris időt igényel. A deque osztály tároló gyorsabb a beszúráskor és a törlésnél a sorozat elején és végén. A list osztály tároló gyorsabb a beszúráskor és a törlésnél a sorozat bármely pontján.
A vektor újratelepítése akkor történik, ha egy tagfüggvénynek növelnie kell a vektorobjektumban található sorozatot a jelenlegi tárolókapacitásán túl. Más beszúrások és törlések megváltoztathatják a sorozaton belüli különböző tárolási címeket. Minden ilyen esetben érvénytelenek lesznek azok az iterátorok vagy hivatkozások, amelyek a sorozat módosított részeire mutatnak. Ha nem történik újratelepítés, csak a beszúrási/törlési pont előtti iterátorok és hivatkozások maradnak érvényesek.
A vector<bool> osztály a booltípusú elemek osztálysablonvektorának teljes specializációja. Rendelkezik egy kiosztóval a specializáció által használt mögöttes típushoz.
A vector<bool> referenciaosztály egy beágyazott osztály, amelynek objektumai hivatkozásokat adhatnak egy vector<bool> objektum elemeire (egy bitre).
Tagok
Konstruktorok
| Név | Leírás |
|---|---|
vector |
Egy adott méretű vektort vagy egy adott érték elemeit, vagy egy adott allocator vagy más vektor másolatát hozza létre. |
Typedefs
| Név | Leírás |
|---|---|
allocator_type |
A vektorobjektum allocator osztályát jelképező típus. |
const_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni egy const elemet egy vektorban. |
const_pointer |
Olyan típus, amely mutatót ad egy vektor const eleméhez. |
const_reference |
Olyan típus, amely egy vektorban tárolt const elemre hivatkozik. Olvasásra és const műveletek végrehajtására szolgál. |
const_reverse_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni a vektor bármely const elemét. |
difference_type |
Egy vektor két elemének címe közötti különbséget biztosító típus. |
iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes olvasni vagy módosítani egy vektor bármely elemét. |
pointer |
Olyan típus, amely mutatót ad egy vektor egy eleméhez. |
reference |
Olyan típus, amely egy vektorban tárolt elemre mutató hivatkozást tartalmaz. |
reverse_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes olvasni vagy módosítani egy fordított vektor bármely elemét. |
size_type |
Egy vektor elemeinek számát megszámláló típus. |
value_type |
Egy vektorban tárolt adattípust képviselő típus. |
Funkciók
| Név | Leírás |
|---|---|
assign |
Törli a vektort, és átmásolja a megadott elemeket az üres vektorba. |
at |
A vektor egy megadott helyén lévő elemre mutató hivatkozást ad vissza. |
back |
A vektor utolsó elemére mutató hivatkozást ad vissza. |
begin |
Véletlenszerű hozzáférésű iterátort ad vissza a vektor első eleméhez. |
capacity |
Azoknak az elemeknek a számát adja vissza, amelyeket a vektor tartalmazhat anélkül, hogy több tárterületet helyezne ki. |
cbegin |
Véletlenszerű hozzáférésű const iterátort ad vissza a vektor első eleméhez. |
cend |
Egy véletlenszerű hozzáférésű const iterátort ad vissza, amely a vektor végén túlra mutat. |
crbegin |
Egy konstans iterátort ad vissza egy fordított vektor első elemének. |
crend |
Egy fordított vektor végéhez tartozó const iterátort ad vissza. |
clear |
Törli a vektor elemeit. |
data |
A vektor első elemére mutató mutatót ad vissza. |
emplace |
A helyükön létrehozott elemet szúr be a vektorba egy megadott pozícióban. |
emplace_back |
A vektor végéhez egy helyben létrehozott elemet ad hozzá. |
empty |
Ellenőrzi, hogy a vektortároló üres-e. |
end |
Egy véletlenszerű hozzáférésű iterátort ad vissza, amely a vektor végére mutat. |
erase |
Eltávolít egy elemet vagy elemtartományt egy vektorban a megadott pozíciókból. |
front |
Egy vektor első elemére mutató hivatkozást ad vissza. |
get_allocator |
Egy objektumot ad vissza a vektor által használt allocator osztálynak. |
insert |
Elem vagy több elem beszúrása a vektorba egy megadott pozícióban. |
max_size |
A vektor maximális hosszát adja vissza. |
pop_back |
Törli az elemet a vektor végén. |
push_back |
Adjon hozzá egy elemet a vektor végéhez. |
rbegin |
Egy iterátort a fordított vektor első elemének ad vissza. |
rend |
Egy fordított vektor végéhez tartozó iterátort ad vissza. |
reserve |
Egy vektorobjektum minimális tárolási hosszát foglalja le. |
resize |
Egy vektor új méretét adja meg. |
shrink_to_fit |
Elveti a felesleges kapacitást. |
size |
A vektor elemeinek számát adja vissza. |
swap |
Két vektor elemeit cseréli le. |
Piaci szereplők
| Név | Leírás |
|---|---|
operator[] |
Egy adott pozícióban lévő vektorelemre mutató hivatkozást ad vissza. |
operator= |
A vektor elemeit lecseréli egy másik vektor másolatára. |
allocator_type
Olyan típus, amely a vektorobjektum allokátorosztályát jelöli.
typedef Allocator allocator_type;
Megjegyzések
allocator_type a Allocatorsablonparaméter szinonimája.
Példa
A allocator_typehasználó példáért tekintse meg a get_allocator példáját.
assign
Törli a vektort, és átmásolja a megadott elemeket az üres vektorba.
void assign(size_type count, const Type& value);
void assign(initializer_list<Type> init_list);
template <class InputIterator>
void assign(InputIterator first, InputIterator last);
Paraméterek
first
A másolandó elemek tartományának első elemének pozíciója.
last
Az első elem elhelyezése a másolandó elemek tartományán túl.
count
A vektorba beszúrt elem másolatainak száma.
value
A vektorba beszúrt elem értéke.
init_list
A beszúrni kívánt elemeket tartalmazó initializer_list.
Megjegyzések
Először assign törli a vektor meglévő elemeit. Ezután assign beszúr egy adott elemtartományt az eredeti vektorból egy vektorba, vagy beszúr egy új megadott értékelem másolatát egy vektorba.
Példa
// 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
A vektor egy megadott helyén lévő elemre mutató hivatkozást ad vissza.
reference at(size_type position);
const_reference at(size_type position) const;
Paraméterek
position
A vektorban hivatkozni kívánt elem alsó indexe vagy pozíciószáma.
Visszaadott érték
Hivatkozás az argumentumban alsó indexelt elemre. Ha position nagyobb, mint a vektor mérete, at kivételt jelez.
Megjegyzések
Ha a at visszatérési értéke egy const_referencevan hozzárendelve, a vektorobjektum nem módosítható. Ha a at visszatérési értéke egy referencevan hozzárendelve, a vektorobjektum módosítható.
Példa
// 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
A vektor utolsó elemére mutató hivatkozást ad vissza.
reference back();
const_reference back() const;
Visszaadott érték
A vektor utolsó eleme. Ha a vektor üres, a visszatérési érték nincs meghatározva.
Megjegyzések
Ha a back visszatérési értéke egy const_referencevan hozzárendelve, a vektorobjektum nem módosítható. Ha a back visszatérési értéke egy referencevan hozzárendelve, a vektorobjektum módosítható.
Az 1 vagy 2 _ITERATOR_DEBUG_LEVEL használatával történő fordításkor futásidejű hiba lép fel, ha üres vektor egy eleméhez próbál hozzáférni. További információ: Ellenőrzött iterátorok.
Példa
// 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
Véletlenszerű hozzáférésű iterátort ad vissza a vektor első eleméhez.
const_iterator begin() const;
iterator begin();
Visszaadott érték
Egy véletlenszerű hozzáférésű iterátor, amely a vector első elemét vagy egy üres vectorkövető helyre címez. Mindig hasonlítsa össze a visszaadott értéket vector::end annak érvényességéhez.
Megjegyzések
Ha a begin visszatérési értéke egy vector::const_iteratorvan hozzárendelve, a vector objektum nem módosítható. Ha a begin visszatérési értéke egy vector::iteratorvan hozzárendelve, a vector objektum módosítható.
Példa
// 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
Azoknak az elemeknek a számát adja vissza, amelyeket a vektor tartalmazhat anélkül, hogy több tárterületet helyezne ki.
size_type capacity() const;
Visszaadott érték
A vektor számára lefoglalt tárterület aktuális hossza.
Megjegyzések
A tagfüggvény resize hatékonyabb lesz, ha elegendő memória van lefoglalva ahhoz, hogy elférjen. A lefoglalt memória mennyiségének megadásához használja a reserve tagfüggvényt.
Példa
// 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
Egy const iterátort ad vissza, amely a tartomány első elemét kezeli.
const_iterator cbegin() const;
Visszaadott érték
Egy const véletlenszerű hozzáférésű iterátor, amely a tartomány első elemére mutat, vagy az üres tartomány végén túl eső helyre (üres tartomány esetén cbegin() == cend()).
Megjegyzések
A cbeginvisszatérési értékével a tartomány elemei nem módosíthatók.
Ezt a tagfüggvényt a begin() tagfüggvény helyett használhatja annak garantálásához, hogy a visszatérési érték const_iterator. Általában a auto típusú levonási kulcsszóval használják, ahogy az alábbi példában is látható. A példában a Container egy módosítható (nem const) tárolónak tekinti, amely támogatja a begin() és cbegin().
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Egy const végponton kívüli iterátort ad vissza, amely a vektor utolsó elemét követő elemre mutat.
const_iterator cend() const;
Visszaadott érték
A vektor const véges iterátora. A vektor utolsó elemét követő elemre mutat. Ez az elem helyőrző, és nem szabad elhatároltnak lennie. Csak összehasonlításhoz használja. Ha a vektor üres, akkor vector::cend() == vector::cbegin().
Megjegyzések
cend annak ellenőrzésére szolgál, hogy egy iterátor teljesítette-e a tartomány végét.
Ezt a tagfüggvényt a end() tagfüggvény helyett használhatja annak garantálásához, hogy a visszatérési érték const_iterator. Általában a auto típusú levonás kulcsszóval használják, ahogy az az alábbi példában is látható. A példában a Container egy módosítható (nem const) tárolónak tekinti, amely támogatja a end() és cend().
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
A cend által visszaadott értéket nem szabad elhalasztani. Csak összehasonlításhoz használja.
clear
Törli a vektor elemeit.
void clear();
Példa
// 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
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni egy const elemet egy vektorban.
typedef implementation-defined const_iterator;
Megjegyzések
Egy const_iterator típus nem használható elem értékének módosítására.
Példa
A const_iteratorhasznált példához tekintse meg a vissza példában.
const_pointer
Olyan típus, amely mutatót ad egy vektor const eleméhez.
typedef typename Allocator::const_pointer const_pointer;
Megjegyzések
Egy const_pointer típus nem használható elem értékének módosítására.
Az iterátor gyakrabban használják vektorelemek eléréséhez.
const_reference
Olyan típus, amely egy vektorban tárolt const elemre hivatkozik. Olvasásra és const műveletek végrehajtására szolgál.
typedef typename Allocator::const_reference const_reference;
Megjegyzések
Egy const_reference típus nem használható elem értékének módosítására.
Példa
// 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
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni a vektor bármely const elemét.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Megjegyzések
Egy const_reverse_iterator típus nem tudja módosítani egy elem értékét, és fordított vektoron keresztüli iterálásra szolgál.
Példa
Az iterátor deklarálásához és használatához lásd rbegin egy példát.
crbegin
Egy konstans iterátort ad vissza egy fordított vektor első elemének.
const_reverse_iterator crbegin() const;
Visszaadott érték
Egy fordított, véletlenszerű hozzáférésű iterátor, amely egy fordított vector első elemét kezeli, vagy a vissza nem fordított vectorutolsó elemét kezeli.
Megjegyzések
A crbeginvisszatérési értékével a vector objektum nem módosítható.
Példa
// 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
Egy const végponton kívüli fordított iterátort ad vissza, amely a fordított vektor utolsó elemét követő elemre mutat.
const_reverse_iterator crend() const;
Visszaadott érték
A fordított vektor const fordított, a végponton kívüli iterátor. A fordított vektor utolsó elemét követő elemre mutat, amely megegyezik a nem fordított vektor első eleme előtti elemével. Ez az elem helyőrző, és nem szabad elhatároltnak lennie. Csak összehasonlításhoz használja.
Megjegyzések
crend fordított vector használ, ugyanúgy, mint vector::cendvector.
A crend visszatérési értékével (megfelelően csökkentve) a vector objektum nem módosítható.
crend segítségével tesztelhető, hogy a fordított iterátor elérte-e a vectorvégét.
A crend által visszaadott értéket nem szabad elhalasztani. Csak összehasonlításhoz használja.
Példa
// 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
A vektor első elemére mutató mutatót ad vissza.
const_pointer data() const;
pointer data();
Visszaadott érték
Mutató a vector első elemére vagy arra a helyre, ahol egy üres vector.
Példa
// 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
Olyan típus, amely két olyan iterátor közötti különbséget biztosít, amelyek ugyanazon vektor elemeire hivatkoznak.
typedef typename Allocator::difference_type difference_type;
Megjegyzések
A difference_type a két mutató közötti elemek számának is nevezhető, mivel egy elem mutatója tartalmazza a címét.
Az iterátor gyakrabban használják vektorelemek eléréséhez.
Példa
// 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
A helyükön létrehozott elemet szúr be a vektorba egy megadott pozícióban.
template <class... Types>
iterator emplace(
const_iterator position,
Types&&... args);
Paraméterek
position
A vector az első elem beszúrásának helye.
args
Konstruktor argumentumok. A függvény arra következtet, hogy melyik konstruktort kell meghívni a megadott argumentumok alapján.
Visszaadott érték
A függvény egy iterátort ad vissza, amely arra a helyre mutat, ahol az új elemet beszúrták a vector.
Megjegyzések
A beszúrási műveletek költségesek lehetnek, vector osztály a vector teljesítményével kapcsolatos vitafórumban.
Példa
// 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
A vektor végéhez egy helyben létrehozott elemet ad hozzá.
template <class... Types>
void emplace_back(Types&&... args);
Paraméterek
args
Konstruktor argumentumok. A függvény arra következtet, hogy melyik konstruktort kell meghívni a megadott argumentumok alapján.
Példa
#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
Ellenőrzi, hogy a vektor üres-e.
bool empty() const;
Visszaadott érték
true, ha a vektor üres; false, ha a vektor nem üres.
Példa
// 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
Egy múltbeli iterátort ad vissza, amely a vektor utolsó elemét követő elemre mutat.
iterator end();
const_iterator end() const;
Visszaadott érték
A vektor múltbeli iterátora. A vektor utolsó elemét követő elemre mutat. Ez az elem helyőrző, és nem szabad elhatároltnak lennie. Csak összehasonlításhoz használja. Ha a vektor üres, akkor vector::end() == vector::begin().
Megjegyzések
Ha a end visszatérési értéke const_iteratortípusú változóhoz van rendelve, a vektorobjektum nem módosítható. Ha a end visszatérési értéke iteratortípusú változóhoz van rendelve, a vektorobjektum módosítható.
Példa
// 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
Eltávolít egy elemet vagy elemtartományt egy vektorban a megadott pozíciókból.
iterator erase(
const_iterator position);
iterator erase(
const_iterator first,
const_iterator last);
Paraméterek
position
A vektorból eltávolítandó elem pozíciója.
first
A vektorból eltávolított első elem pozíciója.
last
Pozíció a vektorból eltávolított utolsó elemen túl.
Visszaadott érték
Olyan iterátor, amely kijelöli az eltávolított elemeken túl fennmaradó első elemet, vagy ha nincs ilyen elem, a vektor végéhez mutató mutató.
Példa
// 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
Egy vektor első elemére mutató hivatkozást ad vissza.
reference front();
const_reference front() const;
Visszaadott érték
Hivatkozás a vektorobjektum első elemére. Ha a vektor üres, a visszatérés nem definiált.
Megjegyzések
Ha a front visszatérési értéke egy const_referencevan hozzárendelve, a vektorobjektum nem módosítható. Ha a front visszatérési értéke egy referencevan hozzárendelve, a vektorobjektum módosítható.
Az 1 vagy 2 _ITERATOR_DEBUG_LEVEL használatával történő fordításkor futásidejű hiba lép fel, ha üres vektor egy eleméhez próbál hozzáférni. További információ: Ellenőrzött iterátorok.
Példa
// 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
A vektor létrehozásához használt kiosztó objektum másolatát adja vissza.
Allocator get_allocator() const;
Visszaadott érték
A vektor által használt kiosztó.
Megjegyzések
A vektorosztály kiosztói határozzák meg, hogy az osztály hogyan kezeli a tárolást. A C++ standard kódtár-tárolóosztályokhoz megadott alapértelmezett kiosztók elegendőek a legtöbb programozási igényhez. A saját kiosztóosztály írása és használata egy speciális C++ funkció.
Példa
// 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
Elem vagy több elem vagy elemtartomány beszúrása a vektorba egy adott pozícióban.
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);
Paraméterek
position
A vektor azon pozíciója, amelyben az első elem be van szúrva.
value
A vektorba beszúrt elem értéke.
count
A vektorba beszúrt elemek száma.
first
A másolandó elemek tartományának első elemének pozíciója.
last
Az első elem helye a másolandó elemek tartományán túl.
Visszaadott érték
Az első két insert függvény egy iterátort ad vissza, amely arra a helyre mutat, ahol az új elemet beszúrták a vektorba.
Megjegyzések
Előfeltételként first és last nem lehetnek iterátorok a vektorban, vagy a viselkedés nem definiált. A beszúrási műveletek költségesek lehetnek, vector osztály a vector teljesítményével kapcsolatos vitafórumban.
Példa
// 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
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes olvasni vagy módosítani egy vektor bármely elemét.
typedef implementation-defined iterator;
Megjegyzések
Egy elem értékének módosítására iterator típus használható.
Példa
Lásd a példát a begin.
max_size
A vektor maximális hosszát adja vissza.
size_type max_size() const;
Visszaadott érték
A vektor lehetséges maximális hossza.
Példa
// 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[]
Egy adott pozícióban lévő vektorelemre mutató hivatkozást ad vissza.
reference operator[](size_type position);
const_reference operator[](size_type position) const;
Paraméterek
position
A vektorelem helyzete.
Visszaadott érték
Ha a megadott pozíció nagyobb vagy egyenlő a tároló méretével, az eredmény nincs meghatározva.
Megjegyzések
Ha a operator[] visszatérési értéke egy const_referencevan hozzárendelve, a vektorobjektum nem módosítható. Ha a operator[] visszatérési értéke egy hivatkozáshoz van rendelve, a vektorobjektum módosítható.
Az 1 vagy 2 _ITERATOR_DEBUG_LEVEL használatával történő fordításkor futásidejű hiba lép fel, ha a vektor határain kívüli elemet próbál elérni. További információ: Ellenőrzött iterátorok.
Példa
// 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=
A vektor elemeit lecseréli egy másik vektor másolatára.
vector& operator=(const vector& right);
vector& operator=(vector&& right);
Paraméterek
right
A vector a vector.
Megjegyzések
A vectormeglévő elemeinek törlése után operator= másolhatja vagy áthelyezheti a right tartalmát a vector.
Példa
// 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
Olyan típus, amely mutatót ad egy vektor egy eleméhez.
typedef typename Allocator::pointer pointer;
Megjegyzések
Egy elem értékének módosítására pointer típus használható.
Példa
// 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
Törli az elemet a vektor végén.
void pop_back();
Megjegyzések
Példakód: vektor::p ush_back().
push_back
Hozzáad egy elemet a vektor végéhez.
void push_back(const T& value);
void push_back(T&& value);
Paraméterek
value
A vektor végéhez hozzáadott elemhez hozzárendelendő érték.
Példa
// 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
Egy iterátort a fordított vektor első elemének ad vissza.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Visszaadott érték
Fordított véletlenszerű hozzáférésű iterátor, amely egy fordított vektor első elemét kezeli, vagy a fordított vektor utolsó elemét kezeli.
Megjegyzések
Ha a rbegin visszatérési értéke egy const_reverse_iteratorvan hozzárendelve, a vektorobjektum nem módosítható. Ha a rbegin visszatérési értéke egy reverse_iteratorvan hozzárendelve, a vektorobjektum módosítható.
Példa
// 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
Olyan típus, amely egy vektorban tárolt elemre mutató hivatkozást tartalmaz.
typedef typename Allocator::reference reference;
Példa
Lásd at a reference vektorosztályban való használatára vonatkozó példát.
rend
Egy korábbi végű fordított iterátort ad vissza, amely a fordított vektor utolsó elemét követő elemre mutat.
const_reverse_iterator rend() const;
reverse_iterator rend();
Visszaadott érték
A fordított vektor végponti iterátorának megfordítása. A fordított vektor utolsó elemét követő elemre mutat, amely megegyezik a nem fordított vektor első eleme előtti elemével. Ez az elem helyőrző, és nem szabad elhatároltnak lennie. Csak összehasonlításhoz használja.
Megjegyzések
rend fordított vektorral használják, ugyanúgy, mint end egy vektorhoz.
Ha a rend visszatérési értéke egy const_reverse_iteratorvan hozzárendelve, akkor a vektorobjektum nem módosítható. Ha a rend visszatérési értéke egy reverse_iteratorvan hozzárendelve, akkor a vektorobjektum módosítható.
rend használható annak ellenőrzésére, hogy egy fordított iterátor elérte-e a vektor végét.
A rend által visszaadott értéket nem szabad elhalasztani. Csak összehasonlításhoz használja.
Példa
// 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
Egy vektorobjektum minimális tárolási hosszát foglalja le, szükség esetén helyet foglal el.
void reserve(size_type count);
Paraméterek
count
A vektor számára lefoglalandó tárterület minimális hossza.
Példa
// 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
Egy vektor új méretét adja meg.
void resize(size_type new_size);
void resize(size_type new_size, Type value);
Paraméterek
new_size
A vektor új mérete.
value
A vektorhoz hozzáadott új elemek inicializálási értéke, ha az új méret nagyobb, mint az eredeti méret. Ha az érték nincs megadva, az új objektumok az alapértelmezett konstruktort használják.
Megjegyzések
Ha a tároló mérete kisebb a kért méretnél, new_size, resize elemeket ad hozzá a vektorhoz, amíg el nem éri a kért méretet. Ha a tároló mérete nagyobb a kért méretnél, resize törli a tároló végéhez legközelebbi elemeket, amíg el nem éri a new_sizeméretet. Nem történik művelet, ha a tároló jelenlegi mérete megegyezik a kért méretével.
size a vektor aktuális méretét tükrözi.
Példa
// 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
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes olvasni vagy módosítani egy fordított vektor bármely elemét.
typedef std::reverse_iterator<iterator> reverse_iterator;
Megjegyzések
Egy reverse_iterator típus használatával a vektort fordított módon lehet iterálni.
Példa
Lásd a példát a rbegin.
shrink_to_fit
Elveti a felesleges kapacitást.
void shrink_to_fit();
Példa
// 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
A vektor elemeinek számát adja vissza.
size_type size() const;
Visszaadott érték
A vektor aktuális hossza.
Példa
// 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
Egy vektor elemeinek számát megszámláló típus.
typedef typename Allocator::size_type size_type;
Példa
Lásd a példát a capacity.
swap
Két vektor elemeit cseréli le.
void swap(
vector<Type, Allocator>& right);
friend void swap(
vector<Type, Allocator>& left,
vector<Type, Allocator>& right);
Paraméterek
right
A felcserélni kívánt elemeket tartalmazó vektor. Vagy egy vektor, amelynek elemeit a vektor elemeivel kell kicserélni left.
left
Olyan vektor, amelynek elemeit a vektor elemeivel kell kicserélni right.
Példa
// 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
Egy vektorban tárolt adattípust képviselő típus.
typedef typename Allocator::value_type value_type;
Megjegyzések
value_type a Typesablonparaméter szinonimája.
Példa
// 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
Vektort hoz létre. A túlterhelések egy adott méretű vektort vagy egy adott érték elemeit építik ki. Vagy más vektor egészének vagy egy részének másolataként. Egyes túlterhelések lehetővé teszik a használni kívánt kiosztó megadását is.
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);
Paraméterek
allocator
Az objektumhoz használni kívánt kiosztóosztály.
get_allocator az objektum kiosztóosztályát adja vissza.
count
A létrehozott vektor elemeinek száma.
value
A létrehozott vektor elemeinek értéke.
source
Az a vektor, amelynek a létrehozott vektora másolat.
first
A másolandó elemek tartományának első elemének pozíciója.
last
Az első elem elhelyezése a másolandó elemek tartományán túl.
init_list
A másolandó elemeket tartalmazó initializer_list.
Megjegyzések
Minden konstruktor tárol egy allokátorobjektumot (allocator), és inicializálja a vektort.
Az első két konstruktor üres kezdeti vektort ad meg. A második konstruktor explicit módon meghatározza a használni kívánt kiosztótípust (allocator).
A harmadik konstruktor a Typeosztály alapértelmezett értékének elemeinek megadott számának (count) ismétlődését adja meg.
A negyedik és ötödik konstruktorok az valueérték elemeinek (count) ismétlődését határozzák meg.
A hatodik konstruktor a vektor sourceegy példányát adja meg.
A hetedik konstruktor mozgatja a vektort source.
A nyolcadik konstruktor egy initializer_list használ az elemek megadásához.
A kilencedik és a tizedik konstruktorok egy vektor [first, last) tartományát másolja.
Példa
// 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
Lásd még:
Szálbiztonság a C++ Standard könyvtárban
C++ standard kódtár referencia-