Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Пример использования конструкторов




 

#include <vector>

#include <iostream>

 

int main( )

{

using namespace std;

vector <int>::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter;

 

// 1 Create an empty vector v0

vector <int> v0;

 

// 3 Create a vector v1 with 3 elements of default value 0

vector <int> v1( 3 );

 

// 4 Create a vector v2 with 5 elements of value 2

vector <int> v2( 5, 2);

 

// 5 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( ) );

 

// 6 Create a copy, vector v4, of vector v2

vector <int> v4( v2 );

 

// Create a vector v5 by copying the range v4[_First, _Last)

vector <int> v5( v4.begin( ) + 1, v4.begin( ) + 3 );

 

cout << "v1 =" ;

for ( v1_Iter = v1.begin( ) ; v1_Iter != v1.end( ) ; v1_Iter++ )

cout << " " << *v1_Iter;

cout << endl;

  

cout << "v2 =" ;

for ( v2_Iter = v2.begin( ) ; v2_Iter != v2.end( ) ; v2_Iter++ )

cout << " " << *v2_Iter;

cout << endl;

 

cout << "v3 =" ;

for ( v3_Iter = v3.begin( ) ; v3_Iter != v3.end( ) ; v3_Iter++ )

cout << " " << *v3_Iter;

cout << endl;

 

cout << "v4 =" ;

for ( v4_Iter = v4.begin( ) ; v4_Iter != v4.end( ) ; v4_Iter++ )

cout << " " << *v4_Iter;

cout << endl;

 

cout << "v5 =";

for ( v5_Iter = v5.begin( ) ; v5_Iter != v5.end( ) ; v5_Iter++ )

cout << " " << *v5_Iter;

cout << endl;  

}

 

Результат выполнения программы:

v1 = 0 0 0

v2 = 2 2 2 2 2

v3 = 1 1 1

v4 = 2 2 2 2 2

v5 = 2 2

 

Функции-члены класса vector

Функция vector::assign()

Уничтожает вектор и копирует указанные элементы во вновь созданный вектор.

 

void assign( size_type _Count, const Type& _Val);template<class InputIterator>void assign(InputIterator _First, InputIterator _Last);

Параметры

_First

Позиция первого элемента вектора, который будет копироваться.

_Last

Позиция первого элемента вектора за границей диапазона элементов, которые будут копироваться.

_Count

Количество копий элемента, которое должно быть вставлено в вектор.

_Val

Значение элемента, которое должно быть вставлено в вектор.

Замечания

После удаления всех существующих элементов вектора функция assign() вставляет заданный диапазон значений из исходного вектора или вставляет указанное число элементов _Count с заданным значением _Val в вектор.

Пример

#include <vector>

Int main( )

{

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.assign(v1.begin()+1, v1.end());

cout << "v2 = ";

for (Iter = v2.begin(); Iter != v2.end(); Iter++)

cout << *Iter << " ";

cout << endl;

v3.assign(7, 4) ;

cout << "v3 = ";

for (int i = 0; i<v3.size(); i++)

cout << v3[i] << " ";

 cout << endl;

cout<<"v1==v2 = "<<(v1==v2)<<endl;

}

Вывод программы

v1 = 50 10 20 30 40

v2 = 20 30 40 50

v3 = 4 4 4 4 4 4 4

v1==v2 = 0

Функция vector::at()

Возвращает ссылку на элемент в указанной позиции вектора.

reference at(size_type _Pos);const_reference at(size_type _Pos) const;

Параметр

_Pos

Позиция (индекс) элемента вектора, на который будет получена ссылка.

Возвращаемое значение

Ссылка на указанный элемент. Если значение _Pos вне диапазона, возникает ИС out_of_range.

Замечания

Если возвращаемое значение присваивается константной ссылке, то вектор не может быть модифицирован, а в противном случае – может.

Пример

#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

 

Функция vector::back()

Возвращает ссылку на последний элемент вектора.

reference back( );const_reference back( ) const;

Возвращаемое значение

Последний элемент вектора. Если вектор пустой, то возвращаемое значение не определено.

Замечания

Если возвращаемое значение присваивается константной ссылке, то вектор не может быть модифицирован, а в противном случае – может.

Пример

#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

 

Функция vector::begin()

Возвращает итератор произвольного доступа, указывающий на первый элемент вектора

const_iterator begin() const;iterator begin();

Возвращаемое значение

Итератор, указывающий на первый элемент вектора. Если вектор пустой, то он указывает на позицию, следующую за пустым вектором.

Замечания

Если возвращаемое значение присваивается константной ссылке, то вектор не может быть модифицирован, а в противном случае – может.

Пример

#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 );

 

c1_Iter = c1.begin( );

cout << "Первый элемент c1 равен "<< *c1_Iter << endl;

 

*c1_Iter = 20;

c1_Iter = c1.begin( );

cout << " Теперь первый элемент c1 равен "<< *c1_Iter << endl;

 

// Следующая строка ошибочна, поскольку итератор константный

// *c1_cIter = 200;

}

Вывод программы

Первый элемент c1 равен 1

Теперь первый элемент c1 равен 20

 

Функция vector:: capacity()

Возвращает число элементов, которые вектор может содержать без распределения дополнительной памяти. В то время как size() возвращает текущее число элементов, capacity() возвращает зарезервированное.

size_type capacity( ) const;

Возвращаемое значение

Текущее число элементов вектора.

Замечания

Функции resize() и reserve() можно использовать для резервирования памяти для вектора.

Пример

#include <vector>

#include <iostream>

 

int main( )

{

using namespace std;

vector <int> v1;

  

v1.push_back( 1 );

v1.push_back( 2 );

cout << "The length of storage allocated is "

   << v1.capacity( ) << "." << endl;

v1.reserve(5);

cout << "The length of storage allocated is now "

   << v1.capacity( ) << "." << endl;

}

Вывод программы

The length of storage allocated is 2.

The length of storage allocated is now 5.

 

 

Функция vector::clear()

Удаляет элементы вектора.

void clear( );

Пример

#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 3The size of v1 after clearing is 0

 

 

Функция vector:: empty()

Возвращает TRUE, если вектор пустой.

bool empty( ) const;

Пример

#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.

Функция vector::end()

Возвращает итератор произвольного доступа, указывающий на элемент вектора, следующий за последним.

iterator end( );const_iterator end( ) const;

Замечания

Если возвращаемое значение присваивается переменной типа const_iterator, то вектор не может быть модифицирован, а если переменной типа iterator – может.

Пример

#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

Функция vector::erase()

Удаляет один или несколько элементов вектора, начиная с указанной позиции.

iterator erase(iterator _Where);iterator erase( iterator _First, iterator _Last );

Параметр

_Where

Позиция элемента вектора, который должен быть удален.

_First

Позиция первого элемента вектора, который должен быть удален.

_Last

Позиция сразу за последним элементом вектора, который должен быть удален.

Возвращаемое значение

Итератор, указывающий на первый элемент массива за последним удаленным или указатель на конец вектора, если он пуст.

Пример

#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

 

Функция vector::front()

Возвращает ссылку на первый элемент вектора

reference front( );const_reference front( ) const;

Возвращаемое значение

Ссылка на первый элемент вектора. Если вектор пустой, то значение не определено.

Замечания

Если возвращаемое значение присваивается константной ссылке, то вектор не может быть модифицирован, а в противном случае – может.

Пример

#include <vector>

#include <iostream>

int main( )

{

using namespace std;   

vector <int> v1;

  

v1.push_back( 10 );

v1.push_back( 11 );

 

int& i = v1.front( );

const int& ii = v1.front( );

 

cout << "The first integer of v1 is "<< i << endl;

i++;

cout << "The second integer of v1 is "<< ii << endl;

}

Вывод программы

The first integer of v1 is 10

The second integer of v1 is 11










Последнее изменение этой страницы: 2018-04-12; просмотров: 411.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...