- 论坛徽章:
- 0
|
[题目]:
/////////////////////////////////////////////////////////////////////////////////////
比如我有一个这样的一维数组集合,数量在几万到几十万.如:
752136125,
021548796,
452669896,
........
254685855,
我想对这个一维数组集合做如下处理:
1,第一步把全部数组的第三个元素都用0代替.
2,第二步如果数组的第一个元素为7则分别用
1和2代替.
3,第三步如果数组的第二个元素为5则分别用
3和4代替.
4,第四步如果数组的第四个元素为1则分别用
5和6代替.
以此类推.......
/////////////////////////////////////////////////////////////////////////////////////
[问题]:
/////////////////////////////////////////////////////////////////////////////////////
1,因为我想处理的这个一维数组集合数量很大,在几万到几十万.而且每 个数组最后要繁殖到十六个,也就是最后这个一维数组集合要扩大十六倍,所以首先应该考虑的是程序运行的速度问题,
2,在最后的处理结果中一定会有大量重复的(完全一样的)数组,所以在程序
中应该考虑删除相同的数组,也就是在最后输出结果中只有一个这样的
数组.
/////////////////////////////////////////////////////////////////////////////////////
[我对问题的看法和思路]:
/////////////////////////////////////////////////////////////////////////////////////
方法一:
#include <stdio.h>;
#include <string.h>;
#include N 9
for (int index = 0; index < m_List1.GetCount(); index++)
{
m_List1.GetLBText(index, str);
ptr = str + 2;
*ptr = '0';
char ptr=new char[8];//动态分配内存空间
if(*(ptr+1)=='5')
{
ptr=str+1;
*ptr==' 3'||*ptr=='4' ;
} // 我在这里试着把数组的第二个元素5,用3和4来代替,程序运行没有
警告和错误,但是,在最后的处理结果中没有把5用3和4代替了,不
知道是什么原因,望指教.
delete [] ptr;//释放动态申请的内存
m_List2.AddString(str);
}
方法二:
1 从字符串列表stringList中取一项,复制到一个缓冲区中.
2 针对该缓冲区进行处理.
3 将该缓冲区的内容加入结果字符串列表.
vector<string>; stringList;
vector<string>; result;
char buffer[512];
vector<string>;::iterator iter = stringList.begin();
while (iter != stringList.end())
{
strcpy(buffer, iter->;c_str());
makeProcess(buffer); //你说这里进行数据处理. 怎样处理,具体讲
一下好吗?
result.push_back(buffer); //添加到结果字符串列表.
}
这两种方法比较,关系到一个动态分配内存的问题,方法一用new和delete
来动态分配内存,方法二用vector容器,vector容器自行维护了自身的大小,不
用操心动态分配内存了,指针的错误毕竟会带来很多麻烦,
但是,方法二从字符串列表stringList中取一项,复制到一个缓冲区中. 再 针对该缓冲区进行处理. 最后将该缓冲区的内容加入结果字符串列表. 这样就是一个一个的对数组进行处理,对于一个几十万的数组集合进行这样处理,程序运行是不是
会很慢.
/////////////////////////////////////////////////////////////////////////////////////
[请教你的问题]:
/////////////////////////////////////////////////////////////////////////////////////
1,
if(*(ptr+1)=='5')
{
ptr=str+1;
*ptr==' 3'||*ptr=='4' ;
} // 我在这里试着把数组的第二个元素5,用3和4来代替,程序运行没有
警告和错误,但是,在最后的处理结果中没有把5用3和4代替了,不
知道是什么原因,望指教.
2,在最后的处理结果中一定会有大量重复的(完全一样的)数组,所以在程序
中应该考虑删除相同的数组,也就是在最后输出结果中只有一个这样的
数组.这个问题怎样解决.
3,速度问题,怎样就会使这个程序跑的更快.请指教
///////////////////////////////////////////////////////////////////////////////////// |
|