如何解决在C ++中以字符串形式发布索引的增量
此函数将生成所有可能的字符串,这些字符串在给定字符串中具有不同的字符组合,并且对于所生成的字符串,如果它们的长度等于函数参数中指定的长度,则将这些字符串返回一组。 代码1可以正常工作,而代码2具有一行更改,可以在连接后更改字符串内部的索引(后递增),但是此操作会导致不同的输出。我以为的方式是,即使我由于后递增而使用s [i ++]时,梳理字符串也将与s [i]的期望值连接在一起,但是行为是不同的。任何人都可以为这种行为的正确原因提供帮助吗?
code 1:
set<string> generate_comb(string s,int len)
{
set<string> hold;
int mask = 1<<s.length();
for(int no=1;no<mask;no++)
{
int num = no;
int i = 0;
string comb = "";
while(num)
{
if(num&1)
comb = comb + s[i];
num = num>>1;
i++;
}
if(comb.length()==len)
hold.insert(comb);
}
return hold;
}
code 2:
set<string> generate_comb(string s,int len)
{
set<string> hold;
int mask = 1<<s.length();
for(int no=1;no<mask;no++)
{
int num = no;
int i = 0;
string comb = "";
while(num)
{
if(num&1)
comb = comb + s[i++]; //this line has been changed
num = num>>1;
//i++;
}
if(comb.length()==len)
hold.insert(comb);
}
return hold;
}
解决方法
不同之处在于const App = () => {
const [isAuthenticated,setIsAuthenticated] = useState(false);
useEffect(() => {
const loadUser = async () => {
await fetch('http://localhost:5000/api/auth',{
method: 'GET',headers: {
'x-auth-token': localStorage.token,},});
localStorage.setItem('token',localStorage.token);
setIsAuthenticated(true);
};
loadUser();
},[]);
return (
<Router>
<div className='d-flex flex-row mb-5'>
<Menu />
<div className='d-flex flex-column mt-5 w-100'>
<Switch>
<Route exact path='/' component={Home} />
<Route exact path='/login' component={SignIn} />
<PrivateRoute
exact
path='/upload'
component={Upload}
isAuthenticated={isAuthenticated}
/>
</Switch>
</div>
</div>
</Router>
);
};
:
if
如果条件为true,则连接字符串,然后执行其余的与条件无关的。
if(num&1)
comb = comb + s[i];
num = num>>1;
i++;
如果条件为true,则串联并递增,但条件为false 不发生增量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。