gpt4 book ai didi

c++ - 转换不同参数类型的二元运算函数

转载 作者:行者123 更新时间:2023-11-28 06:18:49 25 4
gpt4 key购买 nike

我正在尝试使用 std::transform 编辑字符串以输出以下内容:

a  
bcd
efghi
jklmnop
qrstuvwxy
z{abcdefghi
jklmnopqrstuv
wxyz{abcdefghij
klmnopqrstuvwxyz{
abcdefghijklmnopqrs
tuvwxyz{abcdefghijklm
nopqrstuvwxyz{abcdefghi
jklmnopqrstuvwxyz{abcdefg

我的转换二元运算函数有 2 个不同类型的参数(stringsize_t)。这样做是否有效/可能?我还通过引用传递了第二个 arg,所以我可以更改/增加它,这是有效的/可能的吗?

我是否应该改变策略并使用命名空间 algorithm 中的不同函数来实现此目的?也许 shuffle,是否有

void solution1()
{
// Easy solution

std::string testStr = "abcdefghijklmnopqrstuvwxyz{";
size_t index = 1;

while (index < testStr.length()) {

std::string back = testStr.substr(0, index);
std::string front = testStr.substr(index, std::string::npos);

testStr = front + back;
index += 2;
std::cout << back << std::endl;
}
}

// anyway to initialise gIndex to 1?
std::string outputOddGroup(std::string str, size_t& gIndex)
{
// Is there a better way to split and rebuild the string?
std::string back = str.substr(0, gIndex);
std::string front = str.substr(gIndex, std::string::npos);

gIndex += 2;
std::cout << back << std::endl;
return front + back;
}

void solution2()
{
std::string testStr = "abcdefghijklmnopqrstuvwxyz{";
std::transform(testStr.begin(), testStr.end(), testStr.begin(), outputOddGroup);
}

最佳答案

我不确定我是否完全理解您的需求,但这个解决方案怎么样:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
std::string testStr = "abcdefghijklmnopqrstuvwxyz{";
for(size_t i = 0; i < 13; ++i)
{
std::cout << testStr.substr(0, i*2 + 1) << "\n";
std::rotate(testStr.begin(), testStr.begin() + i*2 + 1, testStr.end());
}
return 0;
}

我已经使用 13 次迭代来模拟您的原始输出,因此您可以将其更改为您需要的任何数字。

关于c++ - 转换不同参数类型的二元运算函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690706/

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