2010-08-12 13 views
0

Coca Touch中可以使用矢量嗎?如果是這樣,必須包括哪些圖書館?Cocoa Touch中的矢量/ Objective-C

我跟隨他們大致C教程中所需要的唯一的事情就是#include <vector>

但XCode中指出,有沒有這樣的文件或目錄。

任何指向提供此類功能的庫的指針都會受到讚賞。

問候 〜DHP

+1

矢量由C++,不C.這有很大的影響的。 – zneak 2010-08-12 17:55:10

+1

'#include '是C++,而不是C. – nmichaels 2010-08-12 17:57:55

回答

6

我想通了......按照以下3個步驟:

  1. 擴展文件名與.mm
  2. #include "vector"
  3. 使用此代碼:

std::vector <<int>int> myVector(20); 
instead of just using vector <<int>int> myVector(20); 

現在你有一個全新的C++矢量工作在Objective-C中。

+0

using namespace std; will remove the need f或者在向量之前指定名稱空間 – Stuartsoft 2014-05-24 22:03:24

+0

是的,但是使用'using namespace std;'通常被認爲是不好的做法。 – Sohcahtoa82 2016-04-13 15:52:22

9

的Objective-C是C的超集,因此任何C的溫度將與他們合作。但是,std::vector是一個C++類,這意味着編譯器必須意識到您要在程序中使用C,Objective-C C++代碼。您可以將源文件的擴展名從.m更改爲.mm。但是,如果您仍處於學習Objective-C或C++的階段,請儘量不要將C++與它混合太多。 C++使用「非POD類型」(POD是「普通舊數據」),它本質上與帶有可變參數的函數不兼容;引擎蓋下,全部 Objective-C調用以這種方式工作,所以如果您不太清楚它是如何工作的,可以使通過Objective-C調用處理C++類型變得複雜。你也可以使用Cocoa的NSMutableArray

+0

謝謝你的好評。我已經與ObjC合作了很長一段時間,但從來沒有需要進入C++(畢竟在生活中,並且在經過Basic/Pascal/Fortran/VB.Net/C#/ ObjC和最近的Java之後(就像我一樣進入安卓) 但畢竟是我還是害怕的C++ :( 順便說一句,這是我要玩庫: http://wiki.secondlife.com/wiki/Color_conversion_scripts 問候並再次感謝大時間 – 2010-08-12 18:30:15

+1

@dhomes這些不是STL向量,而是一些第三方向量對象,語言也不像C語言,它們使用的大致相當於'struct vector {float x,y ,z;};'這就是POD,所以隨意把它放在Objective-C調用中 – zneak 2010-08-12 19:12:33

4

怎麼樣:

struct Vector { float r, x, y, z; }; 
typedef struct Vector Vector; 

CG_INLINE Vector 
VectorMake(CGFloat x, CGFloat y, CGFloat z) 
{ 
    Vector vector; vector.x = x; vector.y = y; vector.z = z;return vector; 
} 
+0

C++ std庫中的向量是一種數組,而不是空間中的數學觀點。 – phreakhead 2013-10-19 05:30:07