【发布时间】:2020-07-12 11:02:59
【问题描述】:
我想创建一个函数,我可以在其中迭代包含可变数量字符串的数组/向量,并且在将字符串发送到函数之前我需要知道字符串的长度。我怎样才能以有效的方式实现这一目标?
我对该函数有一些松散的想法,但是我如何有效地向它发送一个字符串数组/向量以及所有这些字符串的大小组合。例如,函数可能如下所示:
myFunc(vector<string> s, int totalWordLength) {
// Loop over strings in vector.
}
我可以做这样的事情来创建一个字符串向量。
const char *args[] = {"12345", "678"};
vector<string> s(args, end(args));
但是我如何在不循环的情况下找出其中字符串 (8) 的大小,以便我可以将其发送到 myFunc(s, sizeOfStrings)?
如果您想通过使用数组或其他方式来实现相同的结果,请告诉我。我正在尝试尽可能高效地做到这一点。
【问题讨论】:
-
在收到字符串时将它们的长度相加,或者遍历向量并将它们的
size()相加。 -
“没有循环通过它”约束使它变得困难。即使
auto total = accumulate(s.begin(), s.end(), 0UL, [](auto acc, string a) { return acc + a.length(); });内部也有一个循环,除非您忽略了代表您循环的算法。
标签: c++ arrays string performance vector