cuốn sách gpt4 ai đã làm

android — Đảo ngược các sự cố vòng lặp

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 15:00:25 26 4
mua khóa gpt4 Nike

Vì vậy, tôi có mã này và nó bị hỏng xcode

void strrev(const std::string& str)
{
for(size_t i=str.length();i>=0;i--)
{
std::cout << str[i];
}
}

Nếu tôi thực thi tôi>0 Nó hoạt động tốt nhưng ký tự đầu tiên không được in về tôi>=0 Bất kỳ câu hỏi hoặc gợi ý?

câu trả lời hay nhất

câu hỏi

Tôi Đúng size_t loại (nó là số nguyên không dấu), vì vậy khi Tôi bằng không và Tôi-- được thực thi, giá trị của nóbao quanh,làm Tôi Hãy là giá trị cao nhất có thể nó có thể lưu trữ. cái này Tôi và sau đó được sử dụng trong biểu thức str[i] gây ra sự cố.

giải pháp

Bạn có thể xử lý nó một cách riêng lẻ Tôi trường hợp bằng không. Ngoài ra, vì việc lập chỉ mục bắt đầu từ 0 nên chỉ số cao nhất có thể là str.length()-1. Sau đó nó phải là:

for(size_t i=str.length()-1; i > 0; i--)
std::cout << str[i];
std::cout << str[0];

Các lựa chọn thay thế được đề xuất

考虑使用vòng lặp ngượcĐể tránh phải xử lý các chỉ mục:

void strrev(const std::string& str)
{
for (auto rit = str.rbegin(); rit != str.rend(); ++rit)
std::cout << *rit;
}

Lưu ý rằng bạn cũng có thể sử dụng std::sao chépKết hợp vòng lặp ngược và std::ostream_iterator std::cout Sự vật:

#include 
#include
#include
#include

void strrev(const std::string& str)
{
std::copy(str.rbegin(), str.rend(),
std::ostream_iterator{std::cout});
}

Hoặc sử dụng trực tiếpstd::reverse_copythay vì std::sao chép, vì vậy không cần trình vòng lặp ngược:

std::reverse_copy(str.begin(), str.end(),
std::ostream_iterator{std::cout});

Về c++ - đảo ngược sự cố vòng lặp, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/48473690/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress