// GLnode.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include#include #include #include #ifndef SAFE_DELETE_VECTOR #define SAFE_DELETE_VECTOR(x) { for(size_t __i__(0); __i__ < x.size(); ++__i__) delete(x.at(__i__)); x.clear(); } #endif template class GLcontainer { public: virtual ~GLcontainer() { SAFE_DELETE_VECTOR(_vec); } void push_back(T* t) { _vec.push_back(t); } void remove(T* t) { std::vector ::iterator pos = std::find(_vec.begin(), _vec.end(), t); if (pos != _vec.end()) _vec.erase(pos); } const T* at(int pos) const { return _vec.at(pos); } const std::vector & get() const { return _vec; } protected: std::vector _vec; }; template class GLcontainerF : public GLcontainer { class _find_if_pred { private: std::string _name; public: _find_if_pred(const std::string& name) : _name(name) { } template bool operator()(const TT* tt) { return ((_name.compare(tt->_name)) == 0); } }; public: const int find(const std::string& name) const { std::vector ::const_iterator pos = std::find_if(_vec.begin(), _vec.end(), _find_if_pred(name)); if (pos != _vec.end()) return (pos - _vec.begin()); return -1; } const T* find_ptr(const std::string& name) const { std::vector ::const_iterator pos = std::find_if(_vec.begin(), _vec.end(), _find_if_pred(name)); if (pos != _vec.end()) return (*pos); return NULL; } }; class GLnode : public GLcontainerF { class _for_each_pred { public: _for_each_pred(float time) : _time(time) { } template void operator()(T * t) const { t->_update(_time); } float _time; }; public: GLnode() { } GLnode(const std::string& name) : _name(name) { } virtual ~GLnode() { } virtual void update(float time) { std::for_each(_vec.begin(), _vec.end(), _for_each_pred(time)); } protected: virtual void _update(float time) const { } /// attribute public: std::string _name; /// operation public: }; int _tmain(int argc, _TCHAR* argv[]) { GLnode _node; for (int i=0; i<10; i++) { char ib[10]; itoa(i, ib, 10); _node.push_back(new GLnode(ib)); } int index = _node.find("9"); const GLnode * ptr = _node.find_ptr("9"); const GLnode * res = _node.at(index); return 0; }
๐ ️ Code Note & Usage
* Human + AI Collaboration: ์ฌ๊ธฐ ๋ฌธ์์ ์ฝ๋๋ ์ ๊ฐ ์ํฐ๋ฆฌ๋ก ๊ตฌ์กฐ๋ฅผ ์ก๊ณ , Google AI (๊ตฌ๊ธ๊ฒ์ AI ๋ชจ๋)๋ฅผ ๋ฌ๋ฌ ๋ณถ์๊ฐ๋ฉฐ(?) ์์ฑํ ์ํฐ๋ฆฌ ์ฝ๋ ๋ญ์น๋ค ์
๋๋ค.
* Free to Use: ๊ฐ์ธ์ ์ธ ์ทจ๋ฏธ๋ก ์ ๋ฆฌํ ๋ฌธ์์ ์ํฐ๋ฆฌ ์ฝ๋ ๋ญ์น ์ง๋ง, ๊ณต๋ถ ํ์ค๋ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์ ๋ค๋ฉด ์์ ๋กญ๊ฒ ๊ฐ์ ธ๊ฐ์ ์ฌ์ฉํ์ค ์ ์๋๋ก ๊ณต๊ฐํฉ๋๋ค!
* ⚠️ Warning: ์ฌ๊ธฐ ์ํฐ๋ฆฌ ์ฝ๋ ๋ญ์น๋ฅผ, ๊ฐ์ ธ๊ฐ์ ๊ธฐํ์ฝ ๊ผญ ์ฌ์ฉ ํ์ ๋ค๋ฉด ๊ผญ ๋ณธ์ธ์ ํ๊ฒฝ์ ๋ง๊ฒ ๋ฒ๊ทธ๋ ์๋ฌ๋ฅผ ๊ผญ ํ ๋ฒ ๋ ํ์ธ(์ฃผ์)ํ๊ณ ์ฌ์ฉํด ์ฃผ์ธ์.
※ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๋๋ ํญ์ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ※
2011๋ 3์ 19์ผ ํ ์์ผ
GLnode.cpp
Git ์ค์น๋ถํฐ ์ฌ์ฉ์ ๋ฑ๋ก๊น์ง์ ํต์ฌ์ ์ค์น ํ๋ก๊ทธ๋จ์ ์คํํ ํ, ํฐ๋ฏธ๋์์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ ๋ฑ๋กํ๋ ๊ฒ์ ๋๋ค.
์ด์์ฒด์ (OS)๋ณ ์ค์น ๋ฐ ๋ฑ๋ก ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. * Windows: ์์ธํ ๋ด์ฉ์ ์๋ ์ฒจ๋ถํ ๊นํ๋ธ ๊ธฐ์คํธ(GitHub Gist) ๋งํฌ๋ค์ด ๋ฌธ์๋ฅผ ํตํด ๋ฐ๋ก ๋ณต์ฌํ์ฌ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.
-
bool atob(const char * string) { if (!strcmp(string, "true")) return true; return false; }
-
Environment Variables: MAXSDKPATH=C:\Program Files (x86)\Autodesk\3ds Max 2010 SDK Sample source http://download.autodesk.com/media/...
-
/// CXXXView.cpp void CXXXView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the ...