STL的vector<string>的初始化方式总结

(1)第一种,类似于数组的方式:

std::vector<std::string> strArray(10);
strArray[0] = "hello";
strArray[1] = "world";
strArray[2] = "this";
strArray[3] = "find";
strArray[4] = "gank";
strArray[5] = "pink";
strArray[6 ]= "that";
strArray[7] = "when";
strArray[8] = "how";   
strArray[9] = "cpp";

(2)push_back的方式:

vector<string> strArray;
strArray.push_back("hello");
strArray.push_back("world");
strArray.push_back("this");
strArray.push_back("find");
strArray.push_back("gank");
strArray.push_back("pink");
strArray.push_back("that");
strArray.push_back("when");
strArray.push_back("how");   
strArray.push_back("cpp");

(3)构造函数的方式:

string str[]={"hello","world","this","find","gank","pink","that","when","how","cpp"};
vector<string> strArray(str, str+10);


好的,我来封装一下这个算法。 我们可以将这个算法封装在一个名为 `StringHandler` 的类中,它有一个 `removeDuplicateLetters` 的公有成员函数,参数为字符串 `s`,返回值为处理后的字符串。在 `StringHandler` 类的构造函数中,我们可以初始化需要用到的容器和变量。 以下是 `StringHandler` 类的头文件 `StringHandler.h`: ```cpp #ifndef STRINGHANDLER_H #define STRINGHANDLER_H #include <string> #include <vector> #include <stack> class StringHandler { public: StringHandler(); std::string removeDuplicateLetters(std::string s); private: std::vector<int> count; std::vector<bool> inStack; std::stack<char> st; }; #endif ``` 接下来是 `StringHandler` 类的实现文件 `StringHandler.cpp`: ```cpp #include "StringHandler.h" #include <algorithm> StringHandler::StringHandler() : count(26, 0), inStack(26, false) {} std::string StringHandler::removeDuplicateLetters(std::string s) { for (char c : s) { count[c - 'a']++; } for (char c : s) { count[c - 'a']--; if (inStack[c - 'a']) { continue; } while (!st.empty() && st.top() > c && count[st.top() - 'a'] > 0) { inStack[st.top() - 'a'] = false; st.pop(); } st.push(c); inStack[c - 'a'] = true; } std::string ans = ""; while (!st.empty()) { ans += st.top(); st.pop(); } std::reverse(ans.begin(), ans.end()); return ans; } ``` 最后,我们需要一个 `main` 函数来测试 `StringHandler` 类。以下是 `main.cpp`: ```cpp #include "StringHandler.h" #include <iostream> int main() { StringHandler handler; std::string s = "bcabc"; std::cout << handler.removeDuplicateLetters(s) << std::endl; return 0; } ``` 我们可以使用以下命令编译并运行代码: ``` g++ -c StringHandler.cpp g++ -c main.cpp g++ -o main StringHandler.o main.o ./main ``` 输出结果为: ``` abc ``` 这样就完成了封装,并成功运行了程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值