实践5
ex3
#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 // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) likes.push_back("favorite book"); likes.push_back("music"); likes.push_back("film"); likes.push_back("paintings"); cout << "-----I like these-----" << endl; // 调用子函数输出vector<string>数组对象likes的元素值 output1(likes); // 为vector<string>数组对象dislikes添加元素值 dislikes.push_back("anime"); dislikes.push_back("sport"); dislikes.push_back("sportsman"); dislikes.push_back("etc"); 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]<<endl; } // 函数实现 // 以迭代器方式输出vector<string>数组对象v的元素值 void output2(vector<string> &v) { vector<string>::iterator i; for(i= v.begin() ; i<v.end() ; ++i) cout<<*i<<endl; }
6-17
#include<iostream> using namespace std; int main() { int a; int *p=&a; *p=9 ; cout<<"The value at p:"<<*p; return 0; }
6-18
#include<iostream> using namespace std; int fn1() { int *p=new int(5);//new后需delete int b=*p; delete p; return b; } int main() { int a=fn1(); cout<<"the value of a is :"<<a; return 0; }
Matrix
#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列元素的引用 { float& a = p[(i - 1)*cols + j - 1]; return a; } inline float element(int i, int j) const// 返回矩阵第i行第j列元素的值 { return p[(i - 1)*cols + j - 1]; } 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> #include<vector> 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 = new float[X.lines*X.cols]; for (int i = 0; i < (X.lines*X.cols);i++) { p[i] = X.p[i]; } } 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 { for (int i = 0; i < lines; i++) { for (int 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; }
#include<iostream> #include"matrix.h" using namespace std; int main(){ Matrix squareMartrix (3); Matrix Martrix1(2,3); Matrix Martrix2(Martrix1); float a[9] = { 1,2,3,4,5,6,7,8,9 }, b[6] = { 1,1,1,1,1,1 }; squareMartrix.setMatrix(a); Martrix1.setMatrix(b); Martrix2.setMatrix(b); cout << "方矩阵为:" << endl; squareMartrix.printMatrix(); cout << "矩阵1为:" << endl; Martrix1.printMatrix(); cout << "1复制构造函数矩阵2为:" << endl; Martrix2.printMatrix(); const float *c = &squareMartrix.element(2,3); cout << "方矩阵第2行第3列元素的引用:" << c<<endl; cout << "方矩阵第2行第3列元素的值:" << squareMartrix.element(2, 3) << endl; //设置方矩阵第2行第1列元素值为1 squareMartrix.setElement(2, 1, 1);
cout << "方矩阵的第2行第1列设为1:" << endl;
squareMartrix.printMatrix();
cout << "方矩阵的行列俱为:" << squareMartrix.getLines() << endl; cout << "矩阵1的行列分别为:" << Martrix1.getLines() << " " << Martrix1.getCols() << endl; return 0; }