использовать его в начале вместо пробуждения и не использовать Destroy(gameObject);
, вы уничтожаете свой игровой объект, тогда вы хотите что-то от него
void Start () {
BombDropScript =gameObject.GetComponent<BombDrop> ();
collider = gameObject.GetComponent<BoxCollider2D> ();
// Call the Explode function after a few seconds
Invoke("Explode", time);
}
void Explode() {
//..
//..
//at last
Destroy(gameObject);
}
, если вы хотите получить доступ к скрипту в другом объекте gameObject назначить игровой объект через инспектор и получить доступ к нему, как это
public gameObject another;
void Start () {
BombDropScript =another.GetComponent<BombDrop> ();
}
Можно использовать повышение:: multi_index для создания двунаправленная карта - можно использовать любое значение пары как ключ, чтобы сделать быстрый поиск.
Как насчет того, чтобы использовать другую карту внутренне, которая хранит значение, сочетание клавиш. Таким образом, я могу звонить, находят на нем?
Да: поддержите две карты с одной картой с помощью одного типа ключа и другого использования другой.
находка () в станд.:: карта, делающая последовательный поиск?
No это - двоичный поиск отсортированного дерева: его скорость является O (журнал (n)).
'inter-process communication'
, она будет считать 3 слова
– chefarov
19 August 2018 в 22:34
Изучите двунаправленные карты повышения: http://www.boost.org/doc/libs/1_38_0/libs/bimap/doc/html/index.html
Это позволяет обоим значениям действовать как ключ.
Иначе, повторение является способом пойти.
Нет, необходимо циклично выполниться по станд.:: отобразите и проверьте все значения вручную. В зависимости от того, что Вы хотите сделать, Вы могли перенести станд.:: карта в простом классе, что также кэши все значения, которые вставляются в карту в чем-то, это легко доступно для поиска и не позволяет дубликаты, как станд.:: набор. Не наследуйтесь станд.:: карта (это не имеет виртуального деструктора!), но переносят его так, чтобы можно было сделать что-то вроде этого:
WrappedMap my_map< std::string, double >;
my_map[ "key" ] = 99.0;
std::set< double > values = my_map.values(); // should give back a set with only 99.0 in it
альтернатива прокрутке Вашего собственного должна была бы использовать Повышение двунаправленная карта, которая легко найдена в сообщениях ниже или Google.
Это действительно зависит от того, что Вы хотите сделать, как часто Вы хотите сделать это, и как трудно это - к самокрутке мало класса обертки по сравнению с установкой и использованием Повышения. Я люблю Повышение, таким образом, это - хороший способ пойти - но существует что-то хорошее и полное о создании Вашего собственного класса обертки. Вы имеете преимущество понимания непосредственно сложности операций, и Вам, возможно, не понадобится полное обратное отображение значений => ключи, это обеспечивается Повышением двунаправленную карту.
i
, поскольку действительно вводит в заблуждение неиндексная переменная; 2. Вы don' t должен создать список, it' s, просто тратя впустую память. Предложение: sum(word.strip(string.punctuation).isalpha() for word in s.split())
– Gabriel
6 July 2018 в 05:12
Если у вас есть доступ к отличной библиотеке boost , тогда вам следует использовать boost :: multi_index для создания двунаправленная карта , как говорит Марк. В отличие от std :: map, это позволяет вам искать либо по ключу, либо по значению.
Если у вас есть только STL под рукой, следующий код сделает свое дело (шаблон для работы с любым типом карты, где mapped_type поддерживает оператор ==):
#include <map>
#include <string>
#include <algorithm>
#include <iostream>
#include <cassert>
template<class T>
struct map_data_compare : public std::binary_function<typename T::value_type,
typename T::mapped_type,
bool>
{
public:
bool operator() (typename T::value_type &pair,
typename T::mapped_type i) const
{
return pair.second == i;
}
};
int main()
{
typedef std::map<std::string, int> mapType;
mapType map;
map["a"] = 1;
map["b"] = 2;
map["c"] = 3;
map["d"] = 4;
map["e"] = 5;
const int value = 3;
std::map<std::string, int>::iterator it = std::find_if( map.begin(), map.end(), std::bind2nd(map_data_compare<mapType>(), value) );
if ( it != map.end() )
{
assert( value == it->second);
std::cout << "Found index:" << it->first << " for value:" << it->second << std::endl;
}
else
{
std::cout << "Did not find index for value:" << value << std::endl;
}
}
re
, это действительно лучше, чем[i for i in string.split() if i.isalnum()]
– JadedTuna 17 October 2013 в 05:02