1. 程式人生 > >cocos2d-x 3.0開發筆記---vector的使用

cocos2d-x 3.0開發筆記---vector的使用

最近學習別人的原始碼 接觸到Vector這個模板類,發現很好用,特記錄下來,研究一下。

先來看看用法:

std::vector<T> v;
std是名稱空間

T表示物件的型別,可以是整型int ,字元string,結構struct,或者自定義的類;

我的理解是對陣列的擴充套件,由程式動態管理記憶體。

詳見:點選開啟連結(維基百科)

以下寫一段實用程式碼:

假如我需要一個物件,它有4個屬性,並且我需要從xml檔案中讀取資料,把他們賦值給物件,然後新增進陣列,對它們進行統一的操作。

如果用類+陣列的方式也可以做到 ,但並不高效。

來看看struct+vector是怎麼實現的:

.h

struct config
{
	string name;
	string id;
	string price;
	string description;
}


vector<config> item_config;

.cpp
config item;
item.name="bomb";
item.id="0";
item.price="100";
item.description="土製炸彈,威力一般,但很便宜";
item_config.push_back(item);//新增進victor 
char name=item_config[0].name;//取


是不是很方便?如果用陣列+類 程式碼量就上去了 而且不用new 也不用->
  • 訪問元素的方法
    • vec[i]
       - 訪問索引值為 i 的元素引用。 (索引值從零起算,故第一個元素是vec[0]。)
    • vec.at(i) - 訪問索引值為 i 的元素的引用,以 at() 訪問會做陣列邊界檢查,如果訪問越界將會丟擲一個例外,這是與operator[]的唯一差異。
    • vec.front() - 回傳 vector 第一個元素的引用。
    • vec.back() - 回傳 vector 最尾元素的引用。
  • 新增或移除元素的方法
    • vec.push_back() - 新增元素至 vector 的尾端,必要時會進行儲存器配置。
    • vec.pop_back() - 刪除 vector 最尾端的元素。
    • vec.insert() - 插入一個或多個元素至 vector 內的任意位置。
    • vec.erase() - 刪除 vector 中一個或多個元素。
    • vec.clear() - 清空所有元素。
  • 取得長度/容量
    • vec.size() - 取得 vector 目前持有的元素個數。
    • vec.empty() - 如果 vector 內部為空,則傳回 true 值。
    • vec.capacity() - 取得 vector 目前可容納的最大元素個數。這個方法與儲存器的配置有關,它通常只會增加,不會因為元素被刪減而隨之減少。
  • 重新配置/重設長度
    • vec.reserve() - 如有必要,可改變 vector 的容量大小(配置更多的儲存器)。在眾多的 STL 實做,容量只能增加,不可以減少。
    • vec.resize() - 改變 vector 目前持有的元素個數。
  • 迭代 (Iterator)
    • vec.begin() - 回傳一個Iterator,它指向 vector 第一個元素。
    • vec.end() - 回傳一個Iterator,它指向 vector 最尾端元素的下一個位置(請注意:它不是最末元素)。
    • vec.rbegin() - 回傳一個反向Iterator,它指向 vector 最尾端元素的。
    • vec.rend() - 回傳一個Iterator,它指向 vector 的第一個元素。

相關推薦

cocos2d-x 3.0開發筆記---vector的使用

最近學習別人的原始碼 接觸到Vector這個模板類,發現很好用,特記錄下來,研究一下。 先來看看用法: std::vector<T> v;std是名稱空間 T表示物件的型別,可以是整型int ,字元string,結構struct,或者自定義的類; 我的理解是

cocos2d-x 3.0開發筆記---用progressTimer製作血槽

血條經常會用到,沒必要重複編寫浪費時間,這裡用最新版的API寫個,方便以後呼叫。 以下程式碼使用的引擎版本是cocos2d-x 3.0rc0 1.RADIAL Sprite *bgSprite = Sprite::create("red.png"); addChil

cocos2d-x 3.0開發筆記---物理引擎封裝 Physics深入學習

/** 建立一個body mass和moment為預設值 */ static PhysicsBody* create(); /** 建立一個質量為mass的body moment為預設值. */ static PhysicsBody* create(float mass);

Cocos2d-x 3.0 開發(十二)在CocoStudio中使用粒子掛載與曲線動畫

1、概述    最新版本的CocoStudio在修復之前Bug的同時,加入了新功能,粒子掛載和曲線動畫就是其中的亮點。下面我們就動手做個例子,先上圖:    2、粒子掛載    執行CocoStudio

Cocos2d-x 3.0開發(三)點選互動的四種處理

1、概述    遊戲也好,程式也好,只有能與使用者互動才有意義。手機上的互動大致可以分為兩部分:點選和輸入。其中點選更為重要,幾乎是遊戲中全部的互動。在Cocos2d-x 3.0中,更改了dispatc

Cocos2d-x 3.0 開發(七)在程式中處理cocoStudio匯出動畫

1、概述    使用cocoStudio可以方便的製作動畫,接下來的工作就是在我們的程式中使用製作的動畫。這篇中,我將使用程式將兩個動畫連線起來。有圖有真相:2、製作動畫    承接上一篇,我們再製作一

Cocos2d-x 3.0開發(十三)使用CocoStudio編輯幀事件並關聯到程式

1、概述    幀事件也是新加入的功能。這篇中我們將看到如何使用它。我們將上篇中製作的動畫稍加修改。有圖為證:2、用途與原理    首先介紹一下幀事件。正如其名:一個與幀相關聯的事件。    為什麼要這

cocos2d-x 3.0遊戲實例學習筆記《卡牌塔防》第一步---開始界面&amp;關卡選擇

cocos2d-x 版本號 blog evel nbsp 不同 null menuitem obj /* 說明: **1.本次遊戲實例是《cocos2d-x遊戲開發之旅》上的最後一個遊戲,這裏用3.0重寫並做下筆記 **2.我也問過木頭本人啦。他說:

Cocos2d-x 3.0】遊戲開發之android交叉編譯

plain edit 100% b2c 令行 sdk 自己的路 smi bin 作者:Senlern 轉載請註明,原文鏈接:http://blog.csdn.net/zhang429350061/article/details/37959489 在上

cocos2d-x-3.0 window+eclipse Android Project 環境與開發新手教程

今天閒來沒事,聽說最新cocos2d-x 出新版3.0。所以來學習一下。 大致參考官方教程:http://www.cocos2d-x.org/wiki/How_to_Build_an_Android_Project_with_Eclipse

Win7 64位中文旗艦版上Cocos2d-x 3.0的Android開發除錯環境架設

系統環境: Win764位中文旗艦版 各元件的版本: VS2012 Python2.7.6 x86 安裝步驟: 1.    預設安裝VS2012 2.    預設安裝Python 2.7.6,修改環境變數Path wmic ENVIRONMENT

Cocos2d-x 3.0 打造一個全平臺概念文件夾

android cocos2d www 全平臺 -s http 概念 1-1 style Cocos2d-x 3.0 打造一個全平臺概念文件夾http:// www.eoeandroid.com/thread-328055-1-1.html Cocos2d

cocos2d-x 3.0 final 移植 android

filename details blank each 連接 python 頭文件 osd 需求 準備工作 你僅僅要依照上一篇的 cocos2d-x 3.0 final 環境搭建 完畢就能夠了 1.編輯proj.android\jni\Android.mk,更改內

[Cocos2d-x v3.x]Mac OX 創建新的Cocos2d-x 3.0 項目

tor cor code none cocos 分享 oid folder left 文章內容來自於: http://cocos2d-x.org/wiki/How_to_Start_A_New_Cocos2D-X_Game Mac OS X 10.9 So

cocos2d-x 3.0 播放MP4視頻

獲取 cocos2 con selector lba 技術 root csdn 移除 猴子原創,歡迎轉載。轉載請註明: 轉載自Cocos2D開發網–Cocos2Dev.com,謝謝。原文地址: http://www.cocos2dev.com/?p=545非常久曾經寫的一

cocos2d-x 3.0 經常使用對象的創建方式

strong array 5% eat 自己 ++ -a 緩存 print cocos2d-x 3.0 中全部對象差點兒都能夠用create函數來創建,其它的創建方式也是有create函數衍生。 以下來介紹下create函數創建一般對象的方法,省得開發中常常忘記啥的。

cocos2d-x 3.0 Loading界面實現

int start popu tor controls lec -a ttf 提高 信息 這個世界每一天都在驗證我們的渺小,但我們卻在努力創造,不斷的在這生活的畫卷中留下自己的腳印。或許等到我們老去的那一天,老得不能動僅僅能靠回顧的那一天。你躺在輪椅上,不斷的回顧過

cocos2d-x 3.0的坑有哪些

命令行 工程文件 模擬 directory file run eclipse setup.py ports 問題一:setup.py 之後, ANT文件夾為什麽創建不成功? ANT文件夾要指定到bin以下,NDK和SDK則指定要根文件夾就可以 問題二:cocos

用 批處理 安裝,編譯 Cocos2d-X 3.0---Windows

align 而且 ble java jdk its 微軟雅黑 ndk files 本文檔適用: Win7 32bits(XP 32bits可能適用,未測試)開發目標環境 Android 軟件版本號 2014年5月下載,當時為較新版本號. 由於Cocos2d-X從

關於cocos2d-x 3.0的點擊交互處理

clipboard 3.0 static php 此外 eas -h con spl 轉自:http://blog.csdn.net/fansongy/article/details/12716671 1、概述 遊戲也好,程序也好,僅僅有能與