c++语法学习(与java、python语法对比)
2017-07-12 12:04
736 查看
引言
1头文件
1包导入和头文件
2注释
3输入输出流
4语言的基本类型
5大小写敏感
6建立数组
1vector的用法
7ifswitch语句
8数据的初始化
9模板类
10常量
11编写函数
12reference的使用
1符号与
13迭代器
1范型编程风格
(PS.看的参考书是 Essential C++)
java:byte/short/int/long 、float/double 、char 、boolean
python:字符串 、布尔类型 、整数 、浮点数 、数字 、列表 、元组 、字典 、日期
http://blog.csdn.net/hancunai0017/article/details/7032383
———-vector和list这两种容器是所谓的顺序性容器。我们在顺序性荣关骑上主要进行所谓的迭代操作。map和set这两种哦容器属于关联容器。
———-泛型算法提供了许多可作用于容器类及数组类型上的操作。这些算法之所以被称为泛型,是因为它们和它们想要操作的元素类型无关。同样,它们也和容器类彼此独立。
———-泛型算法通过function template技术,达到”与操作对象的类型相互独立“的目的。而实现”与容器无关“的诀窍,就是不要直接在容器身上进行操作。而是借由一对iterator(first和last),表示我们要进行迭代的元素范围。
来自别人的比较全面的整理
http://blog.csdn.net/u010098331/article/details/60472800
但是出于水平不同,自己整理也是可以的。
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) 、booljava: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 = 10 int 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( bf16 "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; //沿袭c int num(0); complex<double> purei(0,7) //对象初始化需要多个初值,比如复数complex //java: int num1=0, num2=2; // 没有构造函数语法 #python: a = 10 b = [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.html const 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
但是出于水平不同,自己整理也是可以的。
相关文章推荐
- C、C++、Python、JavaScript、PHP、Java语法对比(纠正篇)
- C++ Java C#.net VB.net 语法对比(转)
- 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
- C++ 与 python 语法 对比
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比
- java与c++的语法对比
- python i++ ,python有这种语法吗?类似C++和java的 i++。整数自增
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
- Ruby Python Java C C++ 数组使用方法对比
- java与python 语法对比
- paip.python语法C++语法对比
- c#语法与c++ 及 java语法的对比分析
- 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
- 转:C++和Java的语法对比
- 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
- 六种主流编程语言(C、C++、Python、JavaScript、PHP、Java)特性对比
- Java & C++ 数组声明和使用语法对比
- golang、python、php、c++、c、java、Nodejs性能对比
- C、C++、Java三种语言语法对比(一)