C++中用vector存放一个数组,对数组进行排序,并输出数组

我的程序没有语法错误但是运行不出结果:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
using std::vector;
int _tmain(int argc, _TCHAR* argv[]);
int main()
{
vector<int>::iterator iter;
string word;
vector<string>text;
while(cin>>word){
text.push_back(word);
}
for(vector<string>::iterator iter=text.begin();iter!=text.end();++iter)
sort(text.begin(),text.end());
cout<<*iter<<endl;
return 0;
}

while(cin>>word){
text.push_back(word);
}
什么时候跳出循环?

for(vector<string>::iterator iter=text.begin();iter!=text.end();++iter)
sort(text.begin(),text.end());
sort一次就可以了,循环迭代的目的什么?

cout<<*iter<<endl;

for循环结束后,iter指向text.end(), 里面不包含有效数据, *iter是会抛出异常的追问

就是因为数组长度不确定,所以就只想着输入了,那该怎么改进呢?
噢噢,但我看vector中遍历元素是要用for循环的,那请问这种情况下应该在for循环里写什么语句呢?
噢噢,所以应该写成text.end()-1吧?

追答

判断输入为特定字符串时跳出循环
sort排序放到for循环前
cout输出在for循环中执行

追问

嗯嗯谢谢O(∩_∩)O

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-28
你这个输入循环没有结束条件,怎么往下执行? 追问

嗯嗯

C++中用vector存放一个数组,对数组进行排序,并输出数组
while(cin>>word){ text.push_back(word);} 什么时候跳出循环?for(vector<string>::iterator iter=text.begin();iter!=text.end();++iter)sort(text.begin(),text.end());sort一次就可以了,循环迭代的目的什么?cout<<*iter<<endl;for循环结束后,iter指向text.end(), 里面不包含有效数据...

用C++编写一个使用类模板对数组进行排序、查找和求元素和的程序_百度...
vector<int> obj;cout<<"数组和为:"<<obj.sum(data,5)<<endl;cout<<"数字4在数组中的位置是:"<<obj.search(4,data,5)<<endl;cout<<"排序前数组各元素为:"<<endl;for(int i = 0; i < 5; i++)cout<<data[i]<<" ";cout<<endl;cout<<"排序后数组各元素为:"<<endl;for...

c++输入10个数存入vector中,升序排序后输出. 提示:使用sort函数_百度...
bool less_second(const myclass & m1, const myclass & m2) { return m1.second < m2.second;} int main() { vector< myclass > vect;for(int i = 0 ; i < 10 ; i ++){ myclass my(10-i, i*3);vect.push_back(my);} for(int i = 0 ; i < vect.size(); i ++)...

C++ vector 排序问题
include < iostream > using namespace std;void showlist(char* arr[], int n){ for(int i=0; i<n; i++){ int k = i;for(int j=k+1; j<n; j++){ if(*arr[k]>*arr[j])k = j;} char* temp = arr[k];arr[k] = arr[i];arr[i] = temp;} for(i = 0; i<n...

求高手帮忙,c++数组排序后怎么输出原先编号
1.你把数组的下标也保存到一个结构体数组中,对原数组进行排序的同时,也对那个临时数组进行同样的调换,等目标数组排序好,你的下标数组自然也排好了。2.例如:struct{int data;size_t index;};排序后的index依然不变。参考代码:#include <iostream>#include <fstream>#include <vector>#include <...

c++用sort对vector排序问题
我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。你可以单步调试你的程序,看是哪一行出错了。

C++Vector放一个普通二维数组
vector的元素如果是容器类型,必须满足以下要求,有复制构造函数,有重载的operator=, 有移动复制构造函数。而数组这个最基本的“容器”却没有这些特性,所以数组不能当vector的元素 你可以把数组封装到一个struct或者class里,然后用这个struct或者class当作vector的元素,也可以用vector的vector解决你的问题,...

...对其进行从小到大的排序要求使用vector和sort函数。
include<vector> using namespace std;int main(){ int x;vector<int> a;\/\/定义一个容器 while(cin>>x&&x!='e'){ a.push_back(x);\/\/变量x在容器a尾部入栈 } sort(a.begin(),a.end());\/\/排序 for(int i=0;i<a.size();i++)\/\/输出(a.size():读取容器a的元素个数)cout<<...

怎样在C++vector容器中输出元素的位置?急求!!
vector为动态数组,可用下标访问数据源 vector<int> vecNumber(22);int key \/\/你要输出的位置的内容 for(int i =0;i<22;i++){ if(vecNumber[i]==key){ cout<<"位置为:"<<i<<endl;break;} }

C++中运用vector容器编写一个程序,要求输入一个string对象,对象中...
vector<string> v;string s1,s2;s1 = "qqqq";s2 = "wwww";v.push_back(s1);v.push_back(s2);cout<<"v的个数:"<<v.size()<<endl<<v[0]<<endl<<v[1]<<endl <<"v[0]的大小:"<<v[0].size()<<endl <<"v[1]的大小:"<<v[1].size()<<endl;return 0;} \/\/你编译...

相似回答