Векторы в Какао Touch / Objective-C - PullRequest
0 голосов
/ 12 августа 2010

Можно ли использовать векторы в Coca Touch?Если да, то какая библиотека должна быть включена?

Я следовал общему учебнику C по ним, и единственное, что нужно было #include <vector>

Но XCode утверждает, что такого файла нет илиdirectory.

Любой указатель на библиотеку, обеспечивающую такую ​​функциональность, приветствуется.

Regards ~ dhp

Ответы [ 3 ]

9 голосов
/ 12 августа 2010

Objective-C является надмножеством C, и поэтому все, что C будет работать с ними.Однако std::vector - это класс C ++, что означает, что компилятор должен знать, что вы собираетесь использовать код C, Objective-C и C ++ внутри вашей программы.Вы можете сделать это, изменив расширение ваших исходных файлов с .m на .mm.

Однако, если вы все еще находитесь на этапе изучения Objective-C или C ++, постарайтесь не смешивать слишкоммного C ++ с этим.C ++ использует «не POD-типы» (POD - «простые старые данные»), которые по своей сути несовместимы с функциями, которые принимают переменные аргументы;Таким образом, все вызовы Objective-C работают таким образом, что может усложнить работу с типами C ++ через вызовы Objective-C, если вы не слишком уверены в том, как все это работает.Вы также можете использовать класс NSMutableArray Какао.

6 голосов
/ 09 декабря 2010

Я понял это ... Выполните 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.

4 голосов
/ 23 августа 2012

как насчет:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...