gpt4 book ai didi

c++ - 初始化字符串逐元素会导致TLE,但此技术可以正常工作

转载 作者:行者123 更新时间:2023-12-02 10:11:47 26 4
gpt4 key购买 nike

我只是在解决字符串问题。我必须用'a'初始化整个字符串。串的大小
n可能高达10 ^ 5。我使用蛮力方法通过循环初始化每个元素。

 string s;  
for(int i = 0;i < n;i++)s[i]='a';
当我通过使用打印字符串时
cout<<s;  
什么都没印出来!要打印字符串,我必须按元素打印:
 for(int i=0;i<n;i++)cout<<s[i];   
此外,此方法还提供了TLE。
但是,当我初始化这样的字符串时
string s(n,'a');    
解决方案被接受。而且我能够完全打印整个字符串。
为什么这么大的差异只是由不同的初始化技术引起的?

最佳答案

string s;
声明一个大小为0的字符串。使用 []对该字符串进行索引将调用未定义的行为。一个结果可能是TLE。
您可以使用 n大小初始化字符串,并将所有元素初始化为相同的char:
string s(n,'a'); 
如果要使用循环,可以执行以下操作:
string s;
for(int i = 0;i < n;i++) s += 'a';

关于c++ - 初始化字符串逐元素会导致TLE,但此技术可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63258593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com