计算向量中偶数长度的单词
count even length words in vectors
我有两个问题。
1) cout << v_setir.capacity();
不是 returns 正确的数字。
2) 我想计算长度为偶数的单词。 我应该用向量来计算。
这是我的代码:
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
int say = 0;
cout << "Setiri daxil edin: ";
string setir;
getline(cin, setir);
vector<string> v_setir;
string ifadeler;
istringstream yig(setir);
while (yig >> ifadeler)
v_setir.push_back(setir);
// First problem
cout << v_setir.capacity() << endl;
// Second problem
/* for (size_t i = 0; i < v_setir.capacity(); i++)
{
if (v_setir[i].size() % 2 == 0)
say += 1;
}
cout << "Uzunlugu cut olan sozerin sayi: " << say << endl;*/
return 0;
}
例如,如果我输入这个字符串行 returns "6"(为什么我不知道):
hi hello how are you
怎么了?我的大脑停止了,我无法确定我的代码 and/or 算法有什么问题。
请帮我解决这些问题。
此致。
capacity()
是当前分配的 space 而不是向量中的元素数。使用:size()
代替
参见:
- http://en.cppreference.com/w/cpp/container/vector/capacity
- http://en.cppreference.com/w/cpp/container/vector/size
您的循环现在应该可以正常工作了,但您也可以查看示例 there,它对可被 3 整除的整数执行类似的操作。
vector::capacity
给出向量的容量(它可以存储多少元素)。在这里,您想计算长度为偶数的字符串的数量。您需要遍历字符串并计算长度为偶数的字符串。
std::vector::capacity
>= std::vector::size
- 容量是向量当前可以容纳的最大元素数。
- 大小是向量中元素的数量。
你可以用 std::count_if
计算偶数长度的单词:
#include <algorithm>
int even_words = std::count_if(v_setir.begin(), v_setir.end(), [] (const string& str) { return str.size() % 2 == 0; });
1) cout << v_setir.capacity()
;不是 returns 正确的数字。
使用vector::size
作为向量中元素的编号。
2) 我想统计长度为偶数的单词。我应该用矢量来做。
首先,您应该在循环中使用 v_setir.size()
而不是 v_setir.capacity()
作为条件。
其次,你为什么不计算字符串来检查它的长度是否均匀?实际上你将 5 'hi hello how are you' 放入向量中。
我想你想把每一个词都放入向量中,而不是整个句子。如果使用 v_setir.push_back(ifadeler);
而不是 v_setir.push_back(setir);
我有两个问题。
1) cout << v_setir.capacity();
不是 returns 正确的数字。
2) 我想计算长度为偶数的单词。 我应该用向量来计算。
这是我的代码:
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
int say = 0;
cout << "Setiri daxil edin: ";
string setir;
getline(cin, setir);
vector<string> v_setir;
string ifadeler;
istringstream yig(setir);
while (yig >> ifadeler)
v_setir.push_back(setir);
// First problem
cout << v_setir.capacity() << endl;
// Second problem
/* for (size_t i = 0; i < v_setir.capacity(); i++)
{
if (v_setir[i].size() % 2 == 0)
say += 1;
}
cout << "Uzunlugu cut olan sozerin sayi: " << say << endl;*/
return 0;
}
例如,如果我输入这个字符串行 returns "6"(为什么我不知道):
hi hello how are you
怎么了?我的大脑停止了,我无法确定我的代码 and/or 算法有什么问题。
请帮我解决这些问题。
此致。
capacity()
是当前分配的 space 而不是向量中的元素数。使用:size()
代替
参见:
- http://en.cppreference.com/w/cpp/container/vector/capacity
- http://en.cppreference.com/w/cpp/container/vector/size
您的循环现在应该可以正常工作了,但您也可以查看示例 there,它对可被 3 整除的整数执行类似的操作。
vector::capacity
给出向量的容量(它可以存储多少元素)。在这里,您想计算长度为偶数的字符串的数量。您需要遍历字符串并计算长度为偶数的字符串。
std::vector::capacity
>= std::vector::size
- 容量是向量当前可以容纳的最大元素数。
- 大小是向量中元素的数量。
你可以用 std::count_if
计算偶数长度的单词:
#include <algorithm>
int even_words = std::count_if(v_setir.begin(), v_setir.end(), [] (const string& str) { return str.size() % 2 == 0; });
1) cout << v_setir.capacity()
;不是 returns 正确的数字。
使用vector::size
作为向量中元素的编号。
2) 我想统计长度为偶数的单词。我应该用矢量来做。
首先,您应该在循环中使用 v_setir.size()
而不是 v_setir.capacity()
作为条件。
其次,你为什么不计算字符串来检查它的长度是否均匀?实际上你将 5 'hi hello how are you' 放入向量中。
我想你想把每一个词都放入向量中,而不是整个句子。如果使用 v_setir.push_back(ifadeler);
而不是 v_setir.push_back(setir);