字符串复制函数(迭代和递归)
在 C++ 环境中,迭代语句是一个复合语句或原因语句,可以一次执行零次或多次。此过程受循环终止过程的约束。当存在 break 语句或语句的延续时,语句按特定顺序执行。
C++ 中存在四种类型的迭代:
While
Do
For
基于范围的 for
此处提到的每个循环都会迭代特定条件,直到其终止。当语句时,表达式计算结果为零。迭代语句不能被视为声明。在这些语句中,while 和 do 语句不适用增量。但是,对于 for 和基于范围的 for,增量是运行方法的必须条件。
以下是迭代方法的一些特性:
初始猜测 – 1
开括号类型
收敛速度非常快
收敛是一个线性过程
方法正在修改
精度非常好
编程工作非常简单
递归是 C++ 中的一个特定函数,它以重复的方式直接或间接地调用自身,直到满足特定条件。递归函数没有基本情况。在递归中,有两个情况可以执行代码
递归条件 - 它有助于在循环中重复编码操作。它节省了时间并降低了代码的复杂性。
基本条件 - 它帮助条件终止过程。
C++ 中迭代的算法
以下是用迭代方法复制字符串的基本算法,该方法将以重复的方式运行条件,直到其终止。
步骤 1 - 开始
步骤 2 - 读取 x0 和 e 的值。(e 是所需的精度)
步骤 3 - 计算 x1 = g(x0)
步骤 4 - 如果 [x1 – x0] <= e,则转到步骤 6
步骤 5 - 否则,将 x0 = x1 并转到步骤 3。
步骤 6 - 显示 x1 作为根。
步骤 7 - 停止
C++ 中递归的算法
以下是用递归方法复制 C++ 环境中字符串的算法,该方法将运行逻辑条件,直到其终止。
步骤 1 - 开始
步骤 2 - 定义基本情况。
步骤 3 - 定义递归情况。
步骤 4 - 确保递归终止。
步骤 5 - 合并解决方案。
发送 6 - 结束
使用迭代复制函数的语法
template<class InputIterator, class OutputIterator> OutputIterator copy (InputIterator first content, InputIterator last content, OutputIterator result content){ while (first!=last) { *result = *first; ++result; ++first; } return result; }
这是此语法,它复制特定的元素。该函数在目标的末尾返回一个迭代器作为值。
使用递归复制函数的语法
int main(){ char str10[70], str20[80]; printf("Enter string to copy for this operation: "); scanf("%[^\n]s", str10); copy(str10, str20, 0); printf("Copying success for the operation.\n"); printf("The first string is here: %s\n", str10); printf("The second string is here: %s\n", str20); return 0; } void copy(char str1[], char str2[], int index) { str20[index] = str10[index]; // printf ("INDEX IS %d\n", index); if (str1[index] == '\0') return; copy(str10, str20, index + 1); }
这里是在此语法中,通过使用递归来复制() 函数。子函数将控制值返回给该特定父函数,该值编码在要复制到字符串二的字符串一中。以下是基本流程和过程:
char* strcpy(char* destination, const char* source); void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
通过“void copy (char[],char[],int);”定义一个函数。
此函数用于通过递归将一个字符串复制到另一个字符串。
向字符串添加值。
方法
方法 1 - 使用 C++ 复制字符串。
方法 2 - 使用迭代方法将一个字符串复制到另一个字符串。
方法 3 - 使用递归方法将一个字符串复制到另一个字符串。
使用 C++ 复制字符串
这里我们使用了 strcpy() 和 cstring 函数在 C++ 环境中复制字符串。
示例 1:在 C++ 环境中复制字符串对象
#include <iostream> using namespace std; int main() { string s07, s16; cout << "Enter data in string s07: "; getline (cin, s07); s16 = s07; cout << "s07 = "<< s07 << endl; cout << "s16 = "<< s16; return 0; }
输出
Enter data in string s07: s07 = s16 =
示例 2:使用 C++ 复制 C 字符串
#include <iostream> #include <cstring> using namespace std; int main() { char s07[2022], s16[2022]; cout << "Enter some data input in string s07: "; cin.getline(s07, 2022); strcpy(s16, s07); cout << "s07 = "<< s07 << endl; cout << "s16 = "<< s16; return 0; }
输出
Enter some data input in string s07: s07 = s16 =
使用迭代方法将一个字符串复制到另一个字符串
对于迭代,我们可以将每个字符内容从 s100 复制到 s200,从表示为 0 的特定索引开始。通过实现此方法,每次调用都会将每个索引增加 1。为此,s100 字符串不会到达终止。时间复杂度为 O(m),其中 m 是字符串的长度,辅助空间为 O(1),其中正在使用额外的空间。
示例 3
#include <bits/stdc++.h> using namespace std; // declare a function to override the method to a particular data string onanother void string // lets assume we have enough space void myCopy(char s100[], char s200[]) { int a = 0; for (a=0; s100[a] != '\0'; a++) s200[a] = s100[a]; s200[a] = '\0'; } // Declare the driver function to go further int main() { char s100[2022] = "ARBRDDINDBD"; char s200[2001] = ""; myCopy (s100, s200); cout << s200; return 0; }
输出
ARBRDDINDBD
使用递归方法将一个字符串复制到另一个字符串
实现递归过程,我们可以将每个字符从字符串 s1997 复制到字符串 s2001。起始索引为 0,方法索引将增加 1,直到过程终止。对于此过程,时间复杂度为 O(m),其中 m 是特定字符串的长度。由于递归调用栈,这里的辅助空间也为 O(m)。
示例 4
#include <bits/stdc++.h> using namespace std; // Apply function to copy one string in to other string by using recursion method void myCopy(char s1997[], char s2001[], int index = 0) { // copying every character from the string s1997 to string s2001 s2001[index] = s1997[index]; // if the operated string reachs to the end then stop and terminate the process if (s1997[index] == '\0') return; // increase the string characters by one to stop the termination myCopy(s1997, s2001, index + 1); } // Declare the driver function to go for the next int main() { char s1997[1000] = "RDDARBINDBD"; char s2001[1000] = ""; myCopy(s1997, s2001); cout << s2001; return 0; }
输出
RDDARBINDBD
结论
今天在这篇文章中,我们学习了如何在 C++ 环境中使用迭代和递归将字符串数据从一个复制到另一个。这里我们提到了可能的算法并根据逻辑构建了 C++ 代码。希望这将帮助您对此处讨论的主题有一个广泛的了解。