【发布时间】:2016-09-11 10:21:00
【问题描述】:
#include <iostream>
#include <array>
#include <algorithm>
#include <cstring>
using namespace std;
int main() {
array<char, 20> test{"HelloWorld"}, tmp;
// method 1
tmp = test;
sort(tmp.begin(), tmp.begin() + strlen(tmp.begin()));
cout << "result: " << tmp.data() << endl;
// method 2
tmp = test;
sort(tmp.begin(), tmp.end());
cout << "result: " << tmp.data() << endl;
return 0;
}
std::array可以用方法1排序,但是太丑了。
我更喜欢方法2,但是什么都不能返回。它有什么问题?
【问题讨论】:
-
两个
sort调用做不同的事情。使用能满足您需求的那个。 -
这里的根本问题是您试图让
std::array成为std::string。事实并非如此,并且尝试将其用作一个永远不会很好地工作。 -
你为什么不用
std::string?那么方法 2 就可以了。 -
end()指向数组范围之外,begin()+strlen(...)指向实际字符串的末尾。
标签: c++ arrays sorting c++11 stl