c++语法学习(与java、python语法对比)

来源:互联网 发布:windows程序设计 编辑:程序博客网 时间:2024/06/03 23:10

  • 引言
  • 1头文件
    • 1包导入和头文件
  • 2注释
  • 3输入输出流
  • 4语言的基本类型
  • 5大小写敏感
  • 6建立数组
    • 1vector的用法
  • 7ifswitch语句
  • 8数据的初始化
  • 9模板类
  • 10常量
  • 11编写函数
  • 12reference的使用
    • 1符号与
  • 13迭代器
    • 1范型编程风格

引言

由于各个语言的语法不尽相同,所以针对自己的习惯,总结C++的语法:
(PS.看的参考书是 Essential C++)

1、头文件:

//c++头文件:#include <string>//java包导入:import java.awt.*;#python导入:import numpy as np

1.1、包导入和头文件

PS. java和python的包导入,只在编译期间中去找需要的部分,所以过分的导入并不会有什么影响。但是c++的头文件会作为源代码全部包含入项目中

2、注释

c++://注释/*注释*/java://注释/*注释*//** 导入javadoc*/python:#注释""" 注释 """

3、输入输出流

//c++:#include <iostream>using namespace std;int main(){    fuck'    cout << "fuck"        <<",fuck";    cin >> fuck;    cout << fuck;    return 0;}//java:import java.util.Scanner;public class fuck{public static void main(string args[]){    System.out.println( "fuck" +" fuck");    Scanner in = new Scanner(System.in);    string fuck = in.nextline();    double a = in.nextDouble();}#python:name = input(“input your name:\n")print("Hello,", name)

4、语言的基本类型

c++:int 、 char 、float/double 、void(signed、unsigned、long、short) 、bool
java:byte/short/int/long 、float/double 、char 、boolean
python:字符串 、布尔类型 、整数 、浮点数 、数字 、列表 、元组 、字典 、日期

5、大小写敏感

除了VB之外,大多数语言都是大小写敏感的

6、建立数组

//c++://一般建立数组的方法:#include <vector>...const int seq_size = 18;int pell_seq[seq_size];vector<int> pell_seq_vector(seq_size);//建立动态数组vector<int> dynamic_voctor;dynamic.push_back(5);

6.1、vector的用法

初始化vector:

size = 10int ele[size] = {1,2,3,4,5,6,7,8,9,10};vector<int> ele_seq(ele, ele + size);//因为vector不支持下列语法://vector<int> ele_seq[size] = {1,2,3,4}//指针操作vector<int> b(array, array + size);vector<int> *point_vector = &b;cout << (*point_vector)[9]

http://blog.csdn.net/hancunai0017/article/details/7032383

7、if/switch语句

/****************switch语句******************///c++:int i=4, a=0;switch(i){    case 1 : a++; break;     case 2 : a+=2; break;     case 4 : a+=4; break;    default : a=0;      // 如果i不等于上面所以case中的值,执行default后面的语句,执行完后退出switch}//java:int score = 87; switch(score / 10){case 9: System.out.println(‘A’);  break; case 8: System.out.println(‘B’);  break; case 7: System.out.println(‘C’);  break; case 6: System.out.println(‘D’);  break; default: System.out.println(‘E’); }#python:无switch语句/****************if语句**********************///c++:#include <stdio.h>int main(){    char c;    printf("input a character:    ");    c=getchar();    if(c<32)        printf("This is a control character\n");    else if(c>='0'&&c<='9')        printf("This is a digit\n");    else if(c>='A'&&c<='Z')        printf("This is a capital letter\n");    else if(c>='a'&&c<='z')        printf("This is a small letter\n");    else        printf("This is an other character\n");    return 0;}//java://基本与c++相同#python:num = 5     if num == 3:            # 判断num的值    print 'boss'        elif num == 2:    print 'user'elif num == 1:    print 'worker'elif num < 0:           # 值小于零时输出    print 'error'else:    print 'roadman'     # 条件均不成立时输出

8、数据的初始化:

//c++:int num = 0, num2=100; //沿袭cint num(0); complex<double> purei(0,7) //对象初始化需要多个初值,比如复数complex//java:int num1=0, num2=2; // 没有构造函数语法#python:a = 10b = [888]

9、模板类

//c++://  使用模板类:#include<complex>#include<vector>...complex<double> purei(0,7);vector<int> vector_array;//  定义模板类和模板函数://  通过下例来说明问题。例如在array.h文件中有模板类array://  http://blog.csdn.net/jfkidear/article/details/7888167//  在array.h文件中定义模板类template <typename T, int SIZE>class array{    T data_[SIZE];    array (const array& other);    const array& operator = (const array& other);public:    array(){};    T& operator[](int i) {return data_[i];}    const T& get_elem (int i) const {return data_[i];}    void set_elem(int i, const T& value) {data_[i] = value;}    operator T*() {return data_;}//  定义模板函数template<class T>int I;T min(T x,T y){   函数体}

10、常量

// http://www.cnblogs.com/googny/p/3695344.htmlconst a = 10;//a = 20 为非法操作

11、编写函数

这里写代码片//c++:#include <iostream>using namespace std;int fibon_elem(int);int main() {    //......    return 0;}int fibon_elem(int n) {    //......    //返回多个元素的技巧:新添参数,别名或指针    return 0;}

12、reference的使用:

//c++:冒泡排序#include <iostream>#include <vector>using namespace std;void display(vector<int>);void swap(int &val1, int &val2);void bubble_sort(vector<int> &vec);void display(vector<int> vec) {    for (int ix = 0; ix < vec.size(); ++ix)        cout << vec[ix] << ' ';    cout << endl;}void swap(int &val1, int &val2) {    int temp = val1;    val1 = val2;    val2 = temp;}void bubble_sort(vector<int> &vec) {    for (int ix = 0; ix < vec.size(); ++ix)        for (int jx = ix + 1; jx < vec.size(); ++jx)            if (vec[ix] > vec[jx])                swap(vec[ix], vec[jx]);}int main() {    int ia[8] = { 8,34,3,13,1,21,5,2 };    vector<int> vec(ia, ia + 8);    cout << "vector before sort: ";    display(vec);    bubble_sort(vec);    cout << "vector after sort: ";    display(vec);    system("pause");    return 0;}

12.1符号*与&

//c++:int ival=1024;int *pi = &ival;//pi是ival的地址,调用ival用(*ival)int pi = &ival;//报错—> int*类型的值不能用于初始化int类型的实体int &pi = ival;//pi是ival的别名,使用时直接使用pi

13、迭代器

13.1、范型编程风格:

———-Standard Template Library(STL)主要由两种组件构成,一是容器,包括vector、list、set、map等类。另一种是用以操作这些容器的所谓泛型算法,包括find()、sort()、merge()等。
———-vector和list这两种容器是所谓的顺序性容器。我们在顺序性荣关骑上主要进行所谓的迭代操作。map和set这两种哦容器属于关联容器。
———-泛型算法提供了许多可作用于容器类及数组类型上的操作。这些算法之所以被称为泛型,是因为它们和它们想要操作的元素类型无关。同样,它们也和容器类彼此独立。
———-泛型算法通过function template技术,达到”与操作对象的类型相互独立“的目的。而实现”与容器无关“的诀窍,就是不要直接在容器身上进行操作。而是借由一对iterator(first和last),表示我们要进行迭代的元素范围。


来自别人的比较全面的整理
http://blog.csdn.net/u010098331/article/details/60472800
但是出于水平不同,自己整理也是可以的。

原创粉丝点击