嘿,所以我对 C++ 相当陌生,我遇到了这个问题,我想将一个字符串的 std 列表拆分为两个列表。
例如:list(1,2,3,4)->list1(1,2) & list2(3,4)
我想splice这就是我应该使用的,但我根本不明白它是如何工作的......
有人可以建议我如何做到这一点吗?
抱歉我的英语不好,感谢大家的帮助。
尝试以下
#include <iostream>
#include <list>
#include <string>
#include <iterator>
int main()
{
std::list<std::string> lst1 = { "1", "2", "3", "4" };
for (const auto &s : lst1 ) std::cout << s << ' ';
std::cout << std::endl;
std::cout << std::endl;
std::list<std::string> lst2;
lst2.splice( lst2.begin(),
lst1,
lst1.begin(),
std::next( lst1.begin(), lst1.size() / 2 ) );
for (const auto &s : lst2 ) std::cout << s << ' ';
std::cout << std::endl;
for (const auto &s : lst1 ) std::cout << s << ' ';
std::cout << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
1 2 3 4
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
另一种方法
#include <iostream>
#include <list>
#include <string>
#include <iterator>
int main()
{
std::list<std::string> lst1 = { "1", "2", "3", "4" };
for (const auto &s : lst1 ) std::cout << s << ' ';
std::cout << std::endl;
auto middle = std::next( lst1.begin(), lst1.size() / 2 );
std::list<std::string> lst2( lst1.begin(), middle );
std::list<std::string> lst3( middle, lst1.end() );
for (const auto &s : lst2 ) std::cout << s << ' ';
std::cout << std::endl;
for (const auto &s : lst3 ) std::cout << s << ' ';
std::cout << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
1 2 3 4
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9065 次 |
| 最近记录: |