c++ lamada and vector initialize

it2026-01-14  10

C++ 11 lamada

[capture-list](params)mutable(optional) exception attribute -> ret {body}lamada表达式允许捕获局部变量,而类的成员变量则需要捕获this,as: - mutable指令修改外部数据的副本 - lamada函数类型声明可用auto,或者function< ()>

include

include

include

include

int main() { std::vector c { 1,2,3,4,5,6,7 }; int x = 5; c.erase(std::remove_if(c.begin(), c.end(), x { return n < x; } ), c.end());

std::cout << "c: "; for (auto i: c) { std::cout << i << ' '; } std::cout << '\n'; // the type of a closure cannot be named, but can be inferred with auto auto func1 = [](int i) { return i+4; }; std::cout << "func1: " << func1(6) << '\n'; // like all callable objects, closures can be captured in std::function // (this may incur unnecessary overhead) std::function<int(int)> func2 = [](int i) { return i+4; }; std::cout << "func2: " << func2(6) << '\n';

}

# C++ vector 用数组初始化vector

vector vec (arr, arr + sizeof(arr) / sizeof(arr[0]) );

template<typename TV, typename TA> void FacialSerializer::fillVectorWithArray(TV& lh, const TA& rh) { auto len = sizeof(rh)/sizeof(rh[0]); // std::copy(rh, rh+len, std::back_inserter(lh)); lh.assign(rh, rh+len); } ```

转载于:https://www.cnblogs.com/octave/p/4384881.html

最新回复(0)