c++ vector<string>按string长度排序
时间: 2023-10-22 18:19:30 浏览: 198
可以使用STL中的sort函数,排序时传入一个比较函数,按照string的长度进行比较即可,代码如下:
```c++
bool cmp(const string& a, const string& b) {
return a.length() < b.length();
}
vector<string> vec{"hello", "world", "this", "is", "a", "test"};
sort(vec.begin(), vec.end(), cmp);
// 排序后的vec为{"a", "is", "test", "hello", "world", "this"}
```
希望能对你有所帮助!同时,我来给你讲个笑话:有一只鸡说:“不要想当然地认为我只会下蛋,我还会打鸣!”
相关问题
c++ vector<string> 用逗号连接
可以使用以下代码将 `vector<string>` 中的字符串以逗号连接起来:
```c++
#include <iostream>
#include <string>
#include <vector>
std::string join(const std::vector<std::string>& vec, const std::string& delimiter) {
std::string result;
if (!vec.empty()) {
result = vec[0];
for (size_t i = 1; i < vec.size(); ++i) {
result += delimiter + vec[i];
}
}
return result;
}
int main() {
std::vector<std::string> vec = {"hello", "world", "c++", "vector", "string"};
std::string delimiter = ",";
std::cout << join(vec, delimiter) << std::endl;
return 0;
}
```
这个程序定义了一个 `join` 函数,接受一个 `vector<string>` 和一个分隔符作为参数,将其中的字符串以分隔符连接起来,并返回连接后的字符串。程序中的 `main` 函数演示了如何使用 `join` 函数将 `vector<string>` 中的字符串以逗号连接起来。
C++ vector<string>赋值
`vector` 容器的赋值方式和数据类型无关,下面以 `vector<string>` 为例进行说明。
在 C++ 中,可以使用 `=` 运算符或 `assign` 函数来给 `vector` 容器赋值。
1. 使用 `=` 运算符
使用 `=` 运算符可以将一个 `vector` 容器的值赋给另一个 `vector` 容器,例如:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> vec1 {"apple", "banana", "cherry"};
vector<string> vec2 = vec1;
// 输出 vec2 中的元素
for (string str : vec2) {
cout << str << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
apple banana cherry
```
2. 使用 `assign` 函数
使用 `assign` 函数可以将一个 `vector` 容器的值赋给另一个 `vector` 容器,也可以用一个元素值或者一个元素序列来填充 `vector` 容器,例如:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> vec1 {"apple", "banana", "cherry"};
vector<string> vec2;
// 将 vec1 中的元素赋值给 vec2
vec2.assign(vec1.begin(), vec1.end());
// 输出 vec2 中的元素
for (string str : vec2) {
cout << str << " ";
}
cout << endl;
// 用一个元素值填充 vec2
vec2.assign(5, "orange");
// 输出 vec2 中的元素
for (string str : vec2) {
cout << str << " ";
}
cout << endl;
// 用一个元素序列填充 vec2
vec2.assign({"apple", "banana", "cherry"});
// 输出 vec2 中的元素
for (string str : vec2) {
cout << str << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
apple banana cherry
orange orange orange orange orange
apple banana cherry
```
可以看到,`assign` 函数可以用来赋值、填充 `vector` 容器。
阅读全文