#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 函数声明
void output1(vector<string> &);
void output2(vector<string> &);
int main()
{
vector<string>likes, dislikes; // 创建vector<string>对象likes和dislikes
likes.push_back("favorite book: 被月光听见 ");
likes.push_back("music: 喜欢");
likes.push_back ("film: 杀人者的记忆法");
likes.push_back ("paintings: none ");
likes.push_back ("anime: 一人之下");
likes.push_back ("sport: table tennid");
likes.push_back ("sportsman: 张继科");// 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
// 补足代码
// 。。。
cout << "-----I like these-----" << endl;
output1(likes) ;
// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
// 。。。
// 为vector<string>数组对象dislikes添加元素值
// 补足代码
// 。。。
cout << "-----I dislike these-----" << endl;
dislikes.push_back("disguest book: white elephant ");
dislikes.push_back("music: noisy music");
dislikes.push_back("film: meaningless films");
dislikes.push_back("paintings: none ");
dislikes.push_back("anime: childish cartoons ");
dislikes.push_back("sport: none");
dislikes.push_back("sportsman: none");
// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
output2(dislikes);
// 交换vector<string>对象likes和dislikes的元素值
// 补足代码
// 。。。
swap(likes,dislikes);
cout << "-----I likes these-----" << endl;
// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
// 。。。
output1(likes);
cout << "-----I dislikes these-----" << endl;
// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
// 。。。
output2(dislikes) ;
return 0;
}
// 函数实现
// 以下标方式输出vector<string>数组对象v的元素值
void output1(vector<string> &v) {
int i;
for(i=0;i<v.size();i++)
cout<<v[i]<<endl;
// 补足程序
// 。。。
}
// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值
void output2(vector<string> &v) {
vector<string>::iterator p;
for(p=v.begin();p!=v.end();p++)
cout<<*p<<endl;
// 补足程序
// 。。。
}
#ifndef MATRIX_H
#define MATRIX_H
class Matrix {
public:
Matrix(int n); // 构造函数,构造一个n*n的矩阵
Matrix(int n, int m); // 构造函数,构造一个n*m的矩阵
Matrix(const Matrix &); // 复制构造函数,使用已有的矩阵X构造
~Matrix(); //析构函数
void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值
void printMatrix() const; // 显示矩阵
inline float & element(int i, int j){
return p[(i-1)*cols+j-1];
} //返回矩阵第i行第j列元素的引用
inline float element(int i, int j) const{
return p[(i-1)*cols+j-1];
}// 返回矩阵第i行第j列元素的值
void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
inline int getLines() const{return lines;}; //返回矩阵行数
inline int getCols() const{return cols;}; //返回矩阵列数
private:
int lines; // 矩阵行数
int cols; // 矩阵列数
float *p; // 指向存放矩阵数据的内存块的首地址
};
#endif
#include"matrix.h"
#include<iostream>
using namespace std;
Matrix::Matrix(int n):lines(n),cols(n)
{
p=new float[lines*cols]; //构造函数的实现
}
Matrix::Matrix(int n,int m) :lines(n),cols(m)
{
p=new float[lines*cols];
}
Matrix::Matrix(const Matrix &X):lines(X.lines),cols(X.cols)
{p=X.p;}//复制构造函数
Matrix:: ~Matrix(){
delete[] p; //析构函数
}
void Matrix::setMatrix(const float *pvalue)
{
for(int i=0;i<lines*cols;i++)
{
p[i]=pvalue[i];
}
}
void Matrix:: printMatrix() const
{
int i,j;
for(i=0;i<lines;i++)
{ //显示矩阵
for(j=0;j<cols;j++)
cout<<p[i*cols+j]<<" ";
cout<<endl;
}
}
void Matrix::setElement(int i, int j, int value)
{
p[(i-1)*cols+j-1]=value; //设置矩阵第i行第j列元素值为value
}
#include <iostream>
#include"matrix.h"
using namespace std;
int main()
{
Matrix M1(2);
Matrix M2(2,3); //构造函数
float a[4]={1,2,3,4};
float b[6]={1,2,3,4,5,6};
M1.setMatrix(a); //为矩阵赋值
M2.setMatrix(b);
Matrix M(M1);
cout<<"-------M------"<<endl;
M.printMatrix();
cout<<"------M1------"<<endl;
M1.printMatrix();
cout<<"-----M2-----"<<endl;
M2.printMatrix();
cout<<"----M1(1,2):"<<M1.element(1,2)<<endl;
cout<<"-----change M2(2,2) to 8"<<endl;
M2.setElement(2,2,8); //.设置第二行第二列元素为8
M2.printMatrix();
M2.getLines(); //矩阵行数
M2.getCols(); //矩阵列数
return 0;
}
![]()
Matrix中 一开始构造函数中将p=new float[]写成float* p=new float[] 结果运行出来什么都么有
关于内联函数 函数实现需要在头文件里
复制构造函数 调用方式一开始也错了
暴漏了很多不注意的问题