转自张运涛
objective-C/C++开发语言了。除了Cocoa相关框架和库之外,像Boost、STL以及标准ANSI C运行时库均可使用
1.引入头文件:
1 #include <vector>2 3 #include <algorithm>4 5 using namespace std;
2.将实现文件改名为.mm 告诉XCode启用gcc...
示例:
1 #include <iostream> 2 3 #include <vector> 4 5 #include <list> 6 7 #include <set> 8 9 #include <map> 10 11 #include <string> 12 13 #include <iterator> 14 15 #include <algorithm> 16 17 #include <functional> 18 19 using namespace std; 20 21 22 23 //函数重载 24 25 void test(int first ,int second) 26 27 { 28 29 NSLog(@"test_int_int called!"); 30 31 } 32 33 34 void test(int first,float second) 35 36 { 37 38 NSLog(@"test_int_float called!"); 39 40 } 41 42 43 //模板 44 45 template <class T> 46 47 void test(T parameter) 48 49 { 50 51 NSLog(@"template fun called!"); 52 53 } 54 55 56 //结构与运算符重载 57 58 struct myNum 59 60 { 61 62 int num; 63 64 }; 65 66 67 int operator+(myNum first , myNum second) 68 69 { 70 71 return first.num+second.num; 72 73 } 74 75 76 //类的使用 77 78 class CPoint { 79 80 81 private: 82 83 int x,y; 84 85 public: 86 87 //构造与析构函数 88 89 CPoint(int x,int y); 90 91 CPoint(const CPoint& pt); 92 93 ~CPoint(){NSLog(@"destruction fun called");} 94 95 //属性与析构 96 97 void setX(int x){this->x=x;} 98 99 void setY(int y){this->y=y;}100 101 int getX(){return x;}102 103 int getY(){return y;}104 105 //输出106 107 void outPut();108 109 friend ostream& operator<<( ostream & out, CPoint & target);110 111 //算符重载112 113 CPoint operator+(CPoint &target);114 115 CPoint operator-(CPoint &target);116 117 void operator+=(CPoint &target);118 119 void operator-=(CPoint &target);120 121 };122 123 //类方法实现部分124 125 CPoint::CPoint(int x,int y)126 127 {128 129 this->x=x;130 131 this->y=y;132 133 }134 135 CPoint::CPoint(const CPoint& pt)136 137 {138 139 x=pt.x;140 141 y=pt.y;142 143 }144 145 CPoint CPoint::operator+(CPoint &target)146 147 {148 149 return CPoint(x+target.getX(),y+target.getY());150 151 }152 153 CPoint CPoint::operator-(CPoint &target)154 155 {156 157 return CPoint(x+target.getX(),y+target.getY());158 159 }160 161 void CPoint::operator+=(CPoint &target)162 163 {164 165 x+=target.getX();166 167 y+=target.getY();168 169 }170 171 void CPoint::operator-=(CPoint &target)172 173 {174 175 x-=target.getX();176 177 y-=target.getY();178 179 }180 181 void CPoint::outPut()182 183 {184 185 cout<<"("<<x<<","<<y<<")"<<endl;186 187 }188 189 //友无函数实现190 191 ostream& operator<<( ostream & out, CPoint & target)192 193 {194 195 out<<"("<<target.x<<","<<target.y<<")"<<endl;196 197 return out;198 199 }200 201 //控制台练习 for 标准C/C++202 203 -(void)consoleStudyStandC_CPP204 205 {206 207 //1.208 209 //函数重载练习210 211 test(1,1);212 213 test(1,1.5f);214 215 //2.216 217 //模板函数练习218 219 test(1);220 221 //3.222 223 {224 225 //结构及运算符重载示例226 227 cout<<"结构与算符重载的使用:\n";228 229 myNum num1,num2;230 231 num1.num=3;232 233 num2.num=2;234 235 cout<<num1+num2<<endl;236 237 }238 239 240 //4.241 242 {243 244 //自定义类的使用:245 246 cout<<"自定义类CPoint的使用...\n";247 248 CPoint pt1(10,10);249 250 pt1.outPut();251 252 pt1.setX(20);253 254 pt1.setY(20);255 256 cout<<pt1;257 258 CPoint pt2(CPoint(30,30));259 260 CPoint temp=pt1+pt2;261 262 cout<<temp<<endl;263 264 }265 266 267 //5.268 269 {270 271 //标准string使用272 273 cout<<"string 的使用...\n";274 275 string str="zhangyuntao in 2010.8.12 ";276 277 str+="hehe -----张运涛\n";278 279 cout<<str;280 281 cout<<"使用c_str...\n";282 283 cout<<str.c_str();284 285 286 287 //stringWithUTF8String: 288 289 //Returns a string created by copying the data from a given C array of UTF8-encoded bytes.290 291 cout<<"从string转成NSString:";292 293 NSLog( [NSString stringWithUTF8String:str.c_str()] );294 295 296 297 //cocoa Foundational NSString使用:298 299 NSString *istr=[NSString stringWithString:@"zhangyuntao 张运涛."];300 301 str=[istr cStringUsingEncoding: NSUTF8StringEncoding];302 303 cout<<"从NSString转成string: "<<str<<endl;304 305 cout<<endl;306 307 }308 309 310 //6.311 312 {313 314 cout<<"vector 一般用法:"<<endl;315 316 //vector容器317 318 vector<int> col;319 320 for(int i=0;i<10;i++)321 322 col.push_back(rand()%100);323 324 //输出容器元素325 326 for(int j=0;j<10;j++)327 328 NSLog(@"%d",col[j]);329 330 //使用C++标准输出流来输出容器元素331 332 for(int k=0;k<10;k++)333 334 cout<<col[k]<<"";335 336 cout<<endl;337 338 //标准sort算法的使用339 340 NSLog(@"After sorting ...:\n");341 342 sort(col.begin(),col.end());343 344 //迭代器的使用345 346 vector<int>::iterator p;347 348 for(p=col.begin();p!=col.end();p++)349 350 NSLog(@"%d",*p);351 352 //标准find算法的使用353 354 p=find(col.begin(), col.end(), 20);355 356 p!=col.end() ? NSLog(@"The num 20 is in the vector") :NSLog(@"The num 20 is not in the vector");357 358 cout<<endl;359 360 }361 362 {363 364 //用vector构建二维数组 365 366 vector< vector<int> > col2;367 368 for(int i=0;i<10;i++)369 370 {371 372 vector<int> temp;373 374 for(int j=0;j<10;j++)375 376 temp.push_back(rand()%90+10);377 378 //用函数对象来进行排序379 380 sort(temp.begin(),temp.end(),greater<int>());381 382 col2.push_back(temp);383 384 }385 386 //输出387 388 cout<<"vector 二维数组的使用:\n";389 390 for(int k=0;k<10;k++)391 392 copy(col2[k].begin(), col2[k].end(),ostream_iterator<int>(cout,"")),cout<<"\n";393 394 cout<<endl;395 396 }397 398 //7.399 400 //list使用401 402 {403 404 list<int> col;405 406 for(int i=0;i<20;i++)407 408 col.push_back(rand()%30);409 410 col.sort();411 412 col.erase(unique(col.begin(),col.end()) , col.end());413 414 cout<<"list 容器使用:\n";415 416 cout<<"after sort and unique, there is"<<col.size()<<" elements in the list\n";417 418 copy(col.begin(), col.end(),ostream_iterator<int>(cout,""));419 420 cout<<endl<<endl;421 422 }423 424 //8.425 426 //set使用427 428 {429 430 set<int> col;431 432 for(int i=0;i<10;i++) col.insert(rand()%90+10);433 434 cout<<"Set 容器使用:\n";435 436 copy(col.begin(), col.end(),ostream_iterator<int>(cout,""));437 438 cout<<endl<<endl;439 440 }441 442 //9.443 444 //map使用:445 446 {447 448 map<int,string> col;449 450 col[1]="iPod";451 452 col[2]="iPhone";453 454 col[3]="iTouch";455 456 cout<<"map 容器使用:\n";457 458 for(map<int,string>::iterator p=col.begin();p!=col.end();p++)459 460 cout<<"("<<p->first<<","<<p->second<<")"<<endl;461 462 cout<<endl;463 464 }465 466 //10.467 468 //文件读写操作469 470 {471 472 ofstream fout;473 474 fout.open("1.txt");475 476 //默认目录为根目录,非当前程序目录,切记!477 478 for(int i=0;i<10;i++)479 480 fout<<i<<"";481 482 fout.close();483 484 cout<<"Write to file succeed!"<<endl;485 486 ifstream fin;487 488 fin.open("1.txt");489 490 int num;491 492 while(fin>>num)493 494 cout<<num<<"";495 496 cout<<endl<<"Read finished!"<<endl;497 498 fin.close();499 500 }501 502 }
原文链接: https://www.cnblogs.com/east520/archive/2011/11/05/2237167.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/35753
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!