豐富的想像力、精湛的數學造詣、嚴謹的治學態度,這些都是成為理論物理學家需要培養的優良素質。例如,在十九世紀中期,物理大師詹姆斯·麥克斯韋覺得電磁學的理論雜亂無章、急需整合。尤其是其中許多理論都涉及超距作用(action at a distance)的概念[註 1]。麥克斯韋對於這概念極為反對,他主張用場論來解釋。例如,磁鐵會在四周產生磁場,而磁場會施加磁場力於鐵粉,使得這些鐵粉依著磁場力的方向排列,形成一條條的磁場線;磁鐵並不是直接施加力量於鐵粉,而是經過磁場施加力量於鐵粉;麥克斯韋嘗試朝著這方向開闢一條思路。他想出的「分子渦流模型」,借用流體力學的一些數學框架,能夠解釋所有那時已知的電磁現象。更進一步,這模型還展示出一個嶄新的概念——電位移。由於這概念,他推理電磁場能夠以波動形式傳播於空間,他又計算出其波速恰巧等於光速。麥克斯韋斷定光波就是一種電磁波。從此,電學、磁學、光學被整合為一統的電磁學。[2]:56ff[3]:93-98
10
1
I have a function that searches a vector of iterators and returns the iterator if its names matches a string passed as an argument. koalaGraph::PVertex lookUpByName(std::string Name, std::vector<koalaGraph::PVertex>& Vertices) { for (size_t i = 0; i < Vertices.size(); i++) { if(Vertices[i]->info.name == Name) return Vertices[i]; } } My question is how can I implement this as a lambda, to use it in connection with std::find_if ? I'm trying this: std::vector<koalaGraph::PVertex> V; std::string Name; std::find_if(V.begin(), V.end(), [&Name]() {return Name == V->info.name;}) But it says that V an enclosing-function local variable cannot be referenced in a lambda body unless it is in the capture list.
...