请列举C++常见表达式-特殊需求表达式 ?
参考答案:
C++ 语言提供了丰富的表达式来满足各种编程需求。以下是一些 C++ 中常见的特殊需求表达式:
- Lambda 表达式:用于定义匿名函数,可以捕获外部变量,并在需要时执行。
auto add = [](int a, int b) { return a + b; };
int sum = add(2, 3); // sum is 5
- 条件运算符(三目运算符):用于根据条件选择两个值中的一个。
int x = 10;
int result = (x > 5) ? x : 0; // result is 10
- 范围基础的 for 循环(C++11 起):用于遍历容器(如数组、向量等)中的元素。
std::vector<int> vec = {1, 2, 3, 4, 5};
for (const auto& i : vec) {
std::cout << i << " "; // Prints: 1 2 3 4 5
}
- 列表初始化(C++11 起):用于初始化变量或对象。
std::vector<int> vec = {1, 2, 3, 4, 5};
int x = 10;
- 类型推导(auto 和 decltype):用于自动推断变量的类型。
auto y = x; // y is int
decltype(x) z = y; // z is also int
- nullptr:用于表示空指针。
int* ptr = nullptr;
- 智能指针(如 std::unique_ptr 和 std::shared_ptr):用于自动管理动态分配的内存。
std::unique_ptr<int> p1(new int(5));
std::shared_ptr<int> p2 = std::make_shared<int>(10);
- 初始化列表:用于在创建对象时初始化其成员。
struct Point {
int x, y;
Point(int a, int b) : x(a), y(b) {}
};
Point p(1, 2); // p.x is 1, p.y is 2
- 模板元编程:使用模板在编译时进行编程,以优化性能或生成特定代码。
template <int N>
struct Factorial {
static const int value = N * Factorial<N-1>::value;
};
template <>
struct Factorial<0> {
static const int value = 1;
};
int result = Factorial<5>::value; // result is 120
- 右值引用和移动语义(C++11 起):用于优化资源使用和提高性能,特别是在处理大型对象或容器时。
std::vector<int> move_data() {
std::vector<int> v(1000000, 1);
return v; // Returns by moving, not copying
}
std::vector<int> v = move_data();
这只是 C++ 中特殊需求表达式的一部分,C++ 是一种功能强大的语言,提供了许多其他功能和特性来满足各种编程需求。