实验五
ex3.cpp
源码:
#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
// 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc)
// 补足代码
likes.push_back("favourite book");
likes.push_back("music");
likes.push_back("film");
likes.push_back("paintings");
likes.push_back("anime");
likes.push_back("sport");
likes.push_back("sportman");
likes.push_back("etc");
cout << "-----I like these-----" << endl;
// 调用子函数输出vector<string>数组对象likes的元素值
output1(likes);
// 为vector<string>数组对象dislikes添加元素值
dislikes.push_back("games");
dislikes.push_back("wake up");
cout << "-----I dislike these-----" << endl;
// 调用子函数输出vector<string>数组对象dislikes的元素值
// 补足代码
output1(dislikes);
// 交换vector<string>对象likes和dislikes的元素值
likes.swap(dislikes);
cout << "-----I likes these-----" << endl;
// 调用子函数输出vector<string>数组对象likes的元素值
// 补足代码
output2(likes);
cout << "-----I dislikes these-----" << endl;
// 调用子函数输出vector<string>数组对象dislikes的元素值
output2(dislikes);
return 0;
}
// 函数实现
// 以下标方式输出vector<string>数组对象v的元素值
void output1(vector<string> &v) {
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
cout<<endl;
}
// 函数实现
// 以迭代器方式输出vector<string>数组对象v的元素值
void output2(vector<string> &v) {
vector<string>::const_iterator i;
for( i=v.begin();i!=v.end();i++){
cout<<*i<<" ";
}
cout<<endl;
}
运行结果:
动态矩阵(Matrix)
源码:
#include"matrix.h"
#include<iostream>
using namespace std;
int main() {
Matrix A(3); Matrix B(3, 4);Matrix C(A);
const float a[9] = { 1,2,3,4,5,6, 7,8,9 };
const float b[12] = { 1,2,3,4,5,6,7,8,9,10,11,12, };
A.setMatrix(a);
B.setMatrix(b);
A.printMatrix();
B.printMatrix();
C.printMatrix();
A.setElement(1, 1, 0);B.setElement(1, 1, 0);
A.printMatrix(); B.printMatrix(); C.printMatrix();
cout << A.getLines() << " " << B.getLines() << " " << C.getLines() << endl;
cout << A.getCols() << " " << B.getCols() << " " << C.getCols() << endl;
return 0;
}
#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); // 复制构造函数,使用已有的矩阵X构造
~Matrix(); //析构函数
void setMatrix(const float *pvalue); // 矩阵赋初值,用pvalue指向的内存块数据为矩阵赋值
void printMatrix() const; // 显示矩阵
inline float &element(int i, int j); //返回矩阵第i行第j列元素的引用
inline float element(int i, int j) const;// 返回矩阵第i行第j列元素的值
void setElement(int i, int j, int value); //设置矩阵第i行第j列元素值为value
inline int getLines() const; //返回矩阵行数
inline int getCols() const; //返回矩阵列数
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) { //复制构造函数的实现
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 { //输出矩阵
cout << "The Matrix is:" << endl;
for (int i = 0; i < lines; i++) {
for (int j = 0; j < cols; j++)
cout << p[i*cols + j] << " ";
cout << endl;
}
}
inline float &Matrix::element(int i, int j) {
return p[i*cols + j];
}
inline float Matrix::element(int i, int j) const {
return p[i*cols + j];
}
void Matrix::setElement(int i, int j, int value) {
p[i*cols + j] = value;
}
运行结果:
一直编译出现这个错误,我找了半天还是没能解决,望指点迷津!!!