C++学習のvector容器ノート
54822 ワード
#include
#include
#include
using namespace std;
class Student
{
public :
Student(){cout << "Student() is dead..." <
~Student(){cout << "~Student() is here..." << endl;}
Sutdent(const Student &stu)
{
m_strName = stu.m_strName;
m_fScore = stu.m_fScore;
cout << "Student(const Student &) is here... " << endl;
}
Student(string name,float score)
{
m_strName = name;
m_fScore = score;
cout << "Student(aguments)..." <
}
/**
friend void print(const vector
&vec) {
vector
::const_iterator iter;iter = vec.begin();
for(;iter!=vec.end();iter++)
{
cout << *iter->stu.m_stuName << endl;
}
}
**/
private:
string m_strName;
float m_fScore;
};
//typedef vector
VECSTU; typedef vector<Student*> VECSTU;
/** **/
void freeVec(VECSTU &vecStu)
{
VECSTU::iterator iter = vecStu.begin();
for (; iter != vecStu.end(); iter++)
{
delete (*iter);
}
}
void print(const vector<int> &vec)
{
vector<int>::const_iterator iter = vec.begin();//
for(;iter !=vec.end();iter++)
{
cout << *iter <<' ';
}
cout << endl;
}
typedef vector<int> VECINT;
int main(void)
{
#if 0
vector<int> vec_int;
for(int i =0;i<10;i++)
{
//push_back:
vec_int.push_back(i+10);
//capacity:
cout << vec_int.capacity() << endl;
}
//size:
for(int i=0;i
{
//
// ,
//cout<
' << endl; cout << vec_int.at(i) << ' ';
}
cout << endl;
/**
verctor
; verctor
v, v 。 vector
::iterator ,vector
::iterator itfor(it=v.begin();it!=v.end();it++)
cout<
**/
vector<int>::iterator iter;
iter = vec_int.begin();
for(;iter!=vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
#endif
#if 0
int iaData[6] = {11,32,15,17,26,19};
//vector
vec(iaData,iaData + 6);// vector<int> vec(10,999);// 10 , 999
for(int i = 0;i < vec.size();i++)
{
cout << vec[i] << ' ';
}
cout << endl;
cout << vec.capacity() << endl;
for(int i =0;i
{
cout << vec[i] << ' ';
}
cout << endl;
cout << "11111111111111111111111111111111111111" <
vec.assign(2,888);
cout << vec.capacity() << endl;
for(int i = 0;i
{
cout << vec[i] << ' ';
}
cout << endl;
cout << "22222222222222222222222222222222222222" << endl;
cout << vec.max_size() << endl;
if(vec.empty())
{
cout << "vector is empty" << endl;
}else
{
cout << "vec id not empty"<
}
vec.reserve(1024);
cout << vec.capacity() <
for(int i = 0;i
{
cout << vec[i] <<' ';
}
cout << endl;
vec.push_back(111);
printf("3333333333333333333333333333333333
");cout << vec.back() << ' ' << vec.front() <
#endif
#if 0
//vector
vec_int; VECINT vec_int;
for(int i =0;i < 10;i++)
{
vec_int.push_back(i+10);
}
vector<int>::iterator iter;
iter = vec_int.begin();
cout << *iter << endl;
for(;iter!=vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
cout << "first function test like above" <
iter = vec_int.begin();
for(;iter!=vec_int.end();iter++)
{
*iter +=10;
}
iter = vec_int.begin();
for(;iter !=vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
cout << "second function test like above" << endl;
vector<int>::const_iterator const_iter;
const_iter = vec_int.begin();
cout << *const_iter << endl;
//*const_iter = 666;/error
for(;const_iter != vec_int.end();const_iter++)
{
cout << *const_iter << ' ';
}
cout << endl;
cout << "third function test this above" << endl;
iter = vec_int.begin();
vec_int.insert(iter,698);
iter = vec_int.begin();
cout << *iter << endl;
cout << "fouth function test this above" <
iter++;
iter++;
vec_int.insert(iter,3,899);//
iter = vec_int.begin();
for(;iter != vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
cout << "ffith function test this above" <
int iaData[] = {1,2,3,4,5,6,7,8,9};
iter = vec_int.begin();
iter++;
vec_int.insert(iter,iaData,iaData + 8);//
iter = vec_int.begin();
for(;iter != vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
cout << "sixth function test is above" <
cout << vec_int.capacity() <
iter = vec_int.begin();
// iter = vec_int.begin();
/** for(;iter != vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
**/
//iter = vec_int.end();
vec_int.insert(iter,2,88);
for(;iter !=vec_int.end();iter++)
{
if(0 != *iter %2)
{
// , ,
//erase: ,
// end()
// ,
//erase() 。
/**
:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string& erase(size_type p0=0,size_type n=np);
:c.erase(T);
list , container.erase(it)。
list
::iterator it;for (it = lt.begin(); it != lt.end(); ) {
if (*it % 2 == 0)
lt.erase(it++);
else
++it;
}
**/
iter = vec_int.erase(iter);
}else
{
iter++;
}
}
cout << vec_int.capacity() <
iter = vec_int.begin();
for(;iter != vec_int.end();iter++)
{
cout << *iter << ' ';
}
cout << endl;
print(vec_int);
cout << "this test is below"<< endl;
VECINT::iterator iter1 = vec_int.begin();
VECINT::iterator iter2 = vec_int.begin();
iter2++;
iter2++;
vec_int.erase(iter1, iter2); //[iter1, iter2);
print(vec_int);
#endif
#if 0
VECSTU stuVec;
Student stu("zhangsan",99);
for(int i=0;i<5;i++)
{
stuVec.push_back(stu);
}
#endif
VECSTU stuVec;
Student *pStu = NULL;
cout << "----------------------------" << endl;
for (int i = 0; i < 5; i++)
{
pStu = new Student("zhangsan", i + 100);
stuVec.push_back(pStu);
}
freeVec(stuVec);
// cout << stuVec.at(0).m_strName <
cout << "Hello World!" << endl;
return 0;
}