利用C++做信号处理方面的仿真,于是就涉及到了大量数据的存储。由于在读取数据的时候,并不知道数据的长度,这时候,vector就很好用了,因为vector容器不用知道数组的长度。
编写程序读入一组string类型的数据,并将它们存储在vector中,接着,把该vector对象复制给一个字符指针数组。为vector中的每个元素创建一个新的字符数组,并把该vector元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。
扩展资料
vector拷贝使用总结
1、利用拷贝赋值操作符(深复制)
vector
vector
outArray = array;
2、利用拷贝构造(深复制)
vector
vector
3、利用swap()函数(交换两个vector)
会清空原vector数组
vector
vector
outArray.swap(array);//清空array数组
vector是c++标准库的一个容器,如果学过数据结构就知道有数组,线性表,链表之类各种东西,vector实际上就是数组。
string是c++标准库的字符串类型。
实例:
vector
vector
vector
vector
你这这种定义 可以存放 string类型的 字符串 . vector
#include
#include
#include
#include
#include
using namespace std;
class Student
{
public:
Student(){}
void write();
void red();
void show();
void sortScore();
int operator<(const Student&);
int a_bScore();
void deleteStudent();
private:
int id;
string name;
double score;
};
vector
void Student::write()
{
Student s;
char fileName[20];
cout<<"请输入文件名:"<
ofstream out(fileName,ios::app);
cout<<"请输入学生学号姓名成绩:"<
while (cin>>s.id>>s.name>>s.score)
{
iter=student.begin();
while (iter!=student.end())
{
if (s.id==iter->id)
{
cout<
}
else
iter++;
}
if (iter==student.end())
{
out<
}
}
cin.clear();
}
void Student::show()
{
vector
cout<<"学号\t姓名\t 成绩\t"<
{
cout<
}
}
void Student::red()
{
Student s;
char fileName[20];
cout<<"请输入文件名:"<
ifstream in(fileName);
vector
while (in>>s.id>>s.name>>s.score)
{
iter=student.begin();
while (iter!=student.end())
{
if (s.id==iter->id)
{
break;
}
else
iter++;
}
if (iter==student.end())
{
student.push_back(s);
}
}
cin.clear();
}
int Student::operator<(const Student&s)
{
return score>s.score?1:0;
}
void Student::sortScore()
{
sort(student.begin(),student.end());
}
int Student::a_bScore()
{
int a,b,low,up,cnt=0;
cout<<"请输入要查找的分数段:"<
if (a>b)
{
up=a;
low=b;
}
else
{
low=a;
up=b;
}
vector
while (iter!=student.end())
{
if (iter->score>=low&&iter->score<=up)
{
cout<
}
iter++;
}
return cnt;
}
void Student::deleteStudent()
{
Student s;
cout<<"请输入要删除的学生学号:"<
vector
while (iter!=student.end())
{
if (iter->id==s.id)
{
break;
}
else
iter++;
if (iter!=student.end())
{
student.erase(iter);
cout<<"OK,"<
else
{
cout<<"没找到学号为:"<
}
}
int main()
{
Student s;
int choice;
cout<<"=-=-=-=-=-=-=-=-=-=-=-=-=-=-欢迎使用学生信息管理系统-=-=-=-=-=-=-=-=-=-=-=-=-=-="<
cout<<"1->添加学生信息 2->显示学生信息 3->删除学生信息 "<
cin>>choice;
if (choice==1)
{
s.write();
system("cls");
goto begin;
}
else if (choice==2)
{
s.show();
system("pause");
system("cls");
goto begin;
}
else if (choice==3)
{
s.deleteStudent();
system("pause");
system("cls");
goto begin;
}
else if (choice==4)
{
s.red();
system("pause");
system("cls");
goto begin;
}
else if (choice==5)
{
s.sortScore();
system("pause");
system("cls");
goto begin;
}
else if (choice==6)
{
s.a_bScore();
system("pause");
system("cls");
goto begin;
}
else if (choice==0)
{
exit(0);
}
else
{
cout<<"输入非法!!!"<
goto begin;
}
return 0;
}