使用#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
int main() {
int wordCount(9);
std::vector<std::string> v(wordCount);
std::vector<std::string>::iterator it;
std::string tStr;
std::string myStr = "the quick fox jumped over the lazy brown dogs";
std::stringstream ss(myStr);
std::cout << "Sentence broken into vector:" << std::endl;
for (int i=0; i<wordCount; ++i) {
ss >> tStr;
v.push_back(tStr);
}
for (it=v.begin(); it != v.end(); ++it)
std::cout << *it << std::endl;
std::cout << std::endl;
return 0;
}
从句子中提取单词。
每个单词都添加了换行符,我看不出原因;你能?谢谢你的帮助。基思:^)
pickledEgg $ g++ -std=c++11 -g -Og -o io2 io2.cpp
pickledEgg $ ./io2
Sentence broken into vector:
the
quick
fox
jumped
over
the
lazy
brown
dogs
编译,运行和输出。注意额外的换行符。
static ArrayList<Integer> var_Pposition = new ArrayList<>()
答案 0 :(得分:6)
使用此行std::vector<std::string> v(wordCount);
创建向量时,您创建了wordCount
个空条目。当您致电push_back
添加单词时,您会在向量的末尾添加单词。迭代向量时,首先使用新行打印空条目,然后打印好数据。
答案 1 :(得分:4)
相当简单:
//std::vector<std::string> v(wordCount);
std::vector<std::string> v;
我认为你想使用std::vector::reserve
。
元素是连续存储的,这意味着元素可以 不仅可以通过迭代器访问,还可以使用常规偏移 指向元素的指针。这意味着指向一个元素的指针 vector可以传递给任何需要指针的函数 数组的元素。 http://en.cppreference.com/w/cpp/container/vector
因为std::vector::push_back
会将值附加到向量中,从而导致更改它的大小。如果处理足够大的矢量,则应考虑使用std::vector::reserve
。
您可以在http://en.cppreference.com/w/cpp/container/vector/reserve中看到差异。