freopen("input.txt", "r", stdin);
getline(cin, a);
gets(a);
char a[1001];
scanf("%s",a);
读取一整行
#include
string c;
getline(cin,c);
int a[3],b[3];
char c;
cin>>a[0]>>c>>a[1]>>c>>a[2];
cin>>b[0]>>c>>b[1]>>c>>b[2];
//当时输入格式 3.2.1
#include
cout
cout保持小数点后几位
cout<
int *numList = (int *) malloc (n * sizeof(int));
scanf("%d", &numList[i]);
int *nums = new int[n];
数组的初始值分配
int array [100]={0}
char 数组大小
#include
strlen(a);
字符串的大小 str.size();
如果是 new的话,
string *strs = new string[n];
int *cc = new int[n];
字符串
find_first_not_of http://baike.baidu.com/link?url=eikMzuoUH9_OOD_Z4ov-JdcAdv2bMse_eWBLjRuL5IH9ggR-AgMng2SI7GiLHQuzQWiRmetaKECksoq-TLoX8a
字符串一些函数 http://blog.sina.com.cn/s/blog_453a02280100r8tv.html
string &append(int n,char c); //在当前字符串结尾添加n个字符c
插入字符串
void insert(iterator it, int n, char c);//在it处插入n个字符c
char 字符的一些函数,
#include
char c='c'
if(islower(c)){
c=toupper(c);
}
s.append(1,c);如果要加长string的话,要写明添加几个char
动态生成数组
cin>>n;
i=n-1;
string *s=new string[n];
http://www.2cto.com/kf/201110/109447.html
环境:VS2010
代码:int len = strlen(str);//求字符串长度
解决:
std::string类有一个方法叫c_str()就是取出string对象的字符串,实现到char *的转换,调用方法:strlen(str.c_str());
总结:strlen只能用于c风格字符串,不能用于string,因为strlen是在遇到\0时结束判断的。用这个strlen(a.c_str())方法把string转换成c风格字符串即可解决
这个博客给出了字符串,字符数组的转换,
http://blog.csdn.net/xinwang24/article/details/6612686、
字符串数组转字符串
#include
#include
using namespace std;
int main(){
char a[10]="aaaabbbba";
string s(&a[0],&a[strlen(a)]);
cout<
字符串转字符数组
#include
#include
using namespace std;
int main(){
string s="aaaavvva";
char a[10];
strncpy(a,s.c_str(),s.length());
for(int i=0;i<10;i++)
cout<
字符串转数字
#include
using namespace std;
int main()
{
char a='1';
int x;
x=atoi(a);
cout<
字符
#include
islower(ch);
isupper(ch);
isalpha(ch);
字符串和
vector的用法
vector existed(MAX, false);
c.push_back(elem) //在尾部加入一个数据。
http://blog.csdn.net/edify/article/details/4035243
http://blog.csdn.net/liunian17/article/details/7435781
void print(int n){
cout<<" "<
vector vec;
for_each(vec.begin(),vec.end(),print);
错误原因
(1)error C2679: 二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换) 未定义string
#include "stdafx.h"
#include
#include
using namespace std;
int main(int argc, char* argv[])
{
int a[7]={1,2,3,4,5,6,7};
vector ivector(a,a+7);//vector的赋值并不可以像数组一样方便的用花括号方便的完成赋值,这里借用了数组来初始化这个vector,初始化方
//式vector intvec(begin,end);这样可以用起来看上去还是比较习惯的。
vector::iterator iter;
for (iter=ivector.begin();iter!=ivector.end();iter++)
{
cout<<*iter<<'\0';
}
cout<
c.insert(vector.begin(),elem)
还有一种 ,rbegin,rend
map真的是好东西
http://blog.csdn.net/artemisrj/article/details/20373281
map好像插入的时候会自动排序。。。
map查找
if(map.find(a)!=map.end()){
;
}
double 1.7 * 10^308 (8 Bytes)
climits头文件的用法
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值
LLONG_MAX 指的是long long 的最大值
溢出的判断条件
1065. A+B and C (64bit) (20)
bool issushu(int m){ //判断是否是素数
int j;
bool flag=true;
for(j=2;j*j<=m;j++){
if(j==2)
;
else if(m%j==0){
flag=false;
}
}
return flag;
}
freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
// freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中
fclose(stdin);//关闭文件
fclose(stdout);//关闭文件
有时候分明包含头文件了却说不存在,那么原因就是没有用空间的关系,加上 std::
string read(ifstream &T) //pass the file stream to the function
{
//the method to read a file, that I showed you before
string a;
char ch;
// a.append(" ");
while(!T.eof())
{
T.get(ch);
//cout<
#include
using namespace std;
void main() //程序从这里开始运行
{
ofstream SaveFile("cpp-home.txt");
SaveFile << "Hello World, from www.cpp-home.com and Loobian!";
SaveFile.close();
}
//#include
string fname="location.txt";
ifstream f(fname.c_str());
if(!f){
cout<<"can't open the file "<>d;
cout<
如果输入的数字以逗号隔开,那么可以用一个字符代替输入
ifstream f(fname.c_str());
while(!f.eof()){
char aa;
f>>xValues[i];
f>>aa;
f>>yValues[i];
i++;
}
f.close();
也就是说fstream的输入输出都是可以按照普通的输入输出的规则进行的。
要想换一个文件输入输出,那么就先关闭文件,再打开文件。
p1.close();
p1.open("C:\\outPoints.csv");
http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27
《Effective STL》里这些话可能对你也有用处:item 31 “我们总结一下你的排序选择: ● 如果你需要在vector、string、deque或数组上进行完全排序,你可以使用sort或stable_sort。 ● 如果你有一个vector、string、deque或数组,你只需要排序前n个元素,应该用partial_sort。 ● 如果你有一个vector、string、deque或数组,你需要鉴别出第n个元素或你需要鉴别出最前的n个元素,而不用知道它们的顺序,nth_element是你应该注意和调用的。 ● 如果你需要把标准序列容器的元素或数组分隔为满足和不满足某个标准,你大概就要找partition或stable_partition。 ● 如果你的数据是在list中,你可以直接使用partition和stable_partition,你可以使用list的sort来代替sort和stable_sort。如果你需要partial_sort或nth_element提供的效果,你就必须间接完成这个任务,但正如我在上面勾画的,会有很多选择。 另外,你可以通过把数据放在标准关联容器中的方法以保持在任何时候东西都有序。你也可能会考虑标准非STL容器priority_queue,它也可以总是保持它的元素有序。”
要使用此函数只需用#include sort即可使用,语法描述为:
sort(begin,end),表示一个范围,例如:
int _tmain(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<
要注意,如果是20个元素的话,是从开头到+20,
string ss;
sort(ss.begin(),ss.end());
int num[100];
Sample: int cmp ( const void *a , const void *b )
{ return *(int *)a - *(int *)b; }
qsort(num,100,sizeof(num[0]),cmp);
其实没有好好学过C++,怎么说呢,语法什么的忘记特别快,还是给自己留一块地,放自己的想法吧。实验室没有面向对象的书看,这次趁着要改写voronoi类的机会温习一下C++面向对象、
一般C++面向对象的类有两个文件,一个文件主声明,一个文件主实现。有时候函数特别短的也可以放进头文件直接实现。
函数的形参,形参是函数声明的那个参数,实参是实际上的那个参数,也就是函数实际调用放进去的参数,数组的形参实参什么的调用有点凌乱,记一种就好了。
在头文件 ,h的类之中,公共类的声明如下。
bool generateVoronoi(float *xValues, float *yValues, int numPoints, float minX, float maxX, float minY, float maxY, float minDist=0,int centerPoints=-1);
VoronoiDiagramGenerator();//类的初始化
~VoronoiDiagramGenerator();//类的析构
在.cpp 文件中,函数的实现是要加上类的名字,比如这个类的名字为VoronoiDiagramGenerator
bool VoronoiDiagramGenerator::generateVoronoi(float *xValues, float *yValues, int numPoints, float minX, float maxX, float minY, float maxY, float minDist,int centerPoints)
{