Bagaimana untuk mengoptimumkan penggunaan parameter lalai dan parameter variadik dalam fungsi C++

PHPz
Lepaskan: 2024-04-20 09:03:02
asal
843 orang telah melayarinya

Optimumkan fungsi parameter lalai dan pembolehubah C++: Parameter lalai: Benarkan fungsi menggunakan nilai lalai untuk mengurangkan lebihan. Letakkan parameter lalai terakhir untuk meningkatkan kebolehbacaan. Gunakan parameter lalai constexpr untuk mengurangkan overhed. Gunakan pengikatan berstruktur untuk meningkatkan kebolehbacaan parameter lalai yang kompleks. Parameter pembolehubah: membenarkan fungsi menerima bilangan parameter yang berubah-ubah. Cuba elakkan menggunakan hujah variadic dan gunakannya hanya apabila perlu. Optimumkan fungsi variadic menggunakan std::initializer_list untuk meningkatkan prestasi.

如何优化 C++ 函数中默认参数和可变参数的使用

Optimumkan penggunaan parameter lalai dan variadik dalam fungsi C++

Parameter lalai

Parameter lalai membenarkan fungsi menggunakan nilai lalai tidak disediakan apabila parameter tertentu tidak disediakan Ini membantu mengurangkan kod berlebihan dalam panggilan fungsi. Contohnya:

int add(int a, int b = 0) {
  return a + b;
}

int main() {
  cout << add(1) << endl; // 输出 1
  cout << add(1, 2) << endl; // 输出 3
}
Salin selepas log masuk

Parameter variadik

Parameter variadik membenarkan fungsi menerima bilangan parameter yang berubah-ubah. Ini berguna untuk fungsi yang perlu mengendalikan bilangan argumen yang tidak diketahui. Contohnya:

int sum(int num, ...) {
  va_list args;
  va_start(args, num);

  int sum = num;
  int arg;
  while ((arg = va_arg(args, int)) != 0) {
    sum += arg;
  }

  va_end(args);
  return sum;
}

int main() {
  cout << sum(1) << endl; // 输出 1
  cout << sum(1, 2, 3, 4, 5) << endl; // 输出 15
}
Salin selepas log masuk

Petua Pengoptimuman

  • Cuba elakkan daripada menggunakan parameter variadik: Parameter pembolehubah memperkenalkan overhed prestasi, jadi gunakannya hanya apabila perlu.
  • Letakkan parameter lalai pada penghujung: Meletakkan parameter lalai di hujung senarai parameter fungsi meningkatkan kebolehbacaan dan kebolehselenggaraan.
  • Gunakan parameter lalai constexpr: Jika nilai lalai diketahui dan tidak akan berubah, menggunakan pengubah suai constexpr boleh mengurangkan overhed.
  • Gunakan pengikatan berstruktur: Untuk parameter lalai yang kompleks, anda boleh menggunakan pengikatan berstruktur untuk mencipta kod yang lebih mudah dibaca.

Kes praktikal:

Pengoptimuman parameter boleh ubah:

// 旧版:存在性能开销
int max(int num, ...) {
  va_list args;
  va_start(args, num);

  int max = num;
  int arg;
  while ((arg = va_arg(args, int)) != 0) {
    max = std::max(max, arg);
  }

  va_end(args);
  return max;
}

// 新版:使用 std::initializer_list 优化
int max(int num, std::initializer_list<int> args) {
  return *std::max_element(args.begin(), args.end(), [](int a, int b) { return a > b; });
}
Salin selepas log masuk

Pengoptimuman parameter lalai:

// 旧版:默认值不在最后,可读性差
int add(int b, int a = 0) {
  return a + b;
}

// 新版:默认值在最后,可读性好
int add(int a, int b = 0) {
  return a + b;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan penggunaan parameter lalai dan parameter variadik dalam fungsi C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan