计算向量中偶数长度的单词
count even length words in vectors
我有 2 个问题。
1) cout << v_setir.capacity();
不返回正确的数字。
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;
}
例如,如果我输入这个字符串行,它会返回"6"(为什么我不知道):
嗨,你好,你好吗
出了什么问题?我的大脑停止了,我无法确定我的代码和/或算法中出了什么问题。
请帮我解决这些问题。
此致敬意。
capacity()
是当前分配的空间,而不是向量中元素的数量。使用:改用size()
看:
- http://en.cppreference.com/w/cpp/container/vector/capacity
- http://en.cppreference.com/w/cpp/container/vector/size
你的循环现在应该可以正常工作,但你也可以看看那里的例子,它对可被 3 整除的整数做了类似的事情。
您可以使用 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()
; 不返回正确的数字。
使用 vector::size
作为向量中元素的编号。
2)我想数长度均匀的单词。我应该用向量来做。
首先,您应该使用循环中的v_setir.size()
而不是v_setir.capacity()
作为条件。其次,你为什么不检查字符串的长度是否均匀呢?实际上,您将 5 个"嗨,你好,你好吗"放入向量中。
我认为你想把每个单词都放进向量中,而不是整个句子。如果那样,请使用v_setir.push_back(ifadeler);
而不是v_setir.push_back(setir);
vector::capacity
给出了向量的容量(它可以存储多少元素)。在这里,您要计算长度为偶数的字符串数。您需要遍历字符串并计算长度为偶数的字符串。
std::vector::capacity
>= std::vector::size
- 容量是矢量当前可以容纳的最大元素数。
- 大小是向量中元素的数量。
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 创建单词对齐的字符向量
- 如何用单词排列向量中的每个字符升序?
- 如何使用向量 c++ 迭代文件中单词的位置
- 将字符串拆分为单个单词并将它们放置在向量中
- 如何从C 向量访问单个单词
- 菜鸟问题:试图审查向量中的特定单词
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- 如何在带有给定特定前缀的向量中打印出单词
- C - 将文本文件读为一串单词,然后将字符串分为向量
- 分类包含数字和单词的字符串向量
- 在 C++11 中计算字母和单词的双字母组合的 std::线程向量的问题
- 在向量中通过一个单词查找行
- 使用单词键将多个行号的向量添加到我的地图中
- 计算字符向量中单词的出现次数
- 在向量中搜索C++字符串s中的单词
- 向量中的常用单词用C++表示单词出现的次数
- 计算向量中偶数长度的单词
- 单词比较 - 向量/getopt
- 将字符串拆分为单词向量