我尝试对df['B_Time']=df['B_Date']+' '+df['B_Time']
df['B_Time']=pd.to_datetime(df['B_Time'])
df.loc[df['C_Type']==1.0, 'diff_1']=df.loc[df['C_Type']==1, 'C_Time']-df.loc[df['C_Time']==1, 'B_Time']
df.loc[df['C_Type']==2.0, 'diff_2']=df.loc[df['C_Type']==2, 'C_Time']-df.loc[df['C_Time']==2, 'B_Time']
df.loc[df['C_Type']==3.0, 'diff_3']=df.loc[df['C_Type']==3, 'C_Time']-df.loc[df['C_Time']==3, 'B_Time']
做一些练习,并且做了一个简单的vector
循环来计算向量中元素的总和。该程序的行为不符合我的预期,因此我尝试运行调试器,但令我惊讶的是,编译器完全跳过了for
循环,而我还没有给出合理的解释。 / p>
for
我已经进行了一些研究,通常,当无法满足最终条件时(例如:设置//all code is written in cpp
#include <vector>
#include <iostream>
using namespace std;
int simplefunction(vector<int>vect)
{
int size = vect.size();
int sum = 0;
for (int count = 0; count == 4; count++) //<<--this for loop is being skipped when I count==4
{
sum = sum + vect[count];
}
return sum; //<<---the return sum is 0
}
int main()
{
vector<int>myvector(10);
for (int i = 0; i == 10; i++)
{
myvector.push_back(i);
}
int sum = simplefunction(myvector);
cout << "the result of the sum is " << sum;
return 0;
}
而不是for
时,会出现定义不明确的count--
循环)>
答案 0 :(得分:4)
您的循环条件总是错误的false
!
看看那里的循环
for (int i = 0; i == 10; i++)
// ^^^^^^^-----> condition : is it `true` when i is 0 (NO!!)
和
for (int count=0; count==4; count++)
// ^^^^^^^^^-----> condition : is it `true` when i is 0 (NO!!)
您要先检查i
等于10
和4
,然后再递增。始终是false
。因此,它没有进一步执行。他们应该是
for (int i = 0; i < 10; i++)
和for (int count=0; count<4; count++)
第二,vector<int> myvector(10);
分配整数的向量,并用0
进行初始化。意思是,此行之后的循环(即main()
中的循环)
for (int i = 0; i == 10; i++) {
myvector.push_back(i);
}
将在其中再插入10个元素(即i
),最后将得到myvector
和20
个元素。您可能打算这样做
std::vector<int> myvector;
myvector.reserve(10) // reserve memory to avoid unwanted reallocations
for (int i = 0; i < 10; i++)
{
myvector.push_back(i);
}
或更简单地使用<numeric>
标头中的std::iota
。
#include <numeric> // std::iota
std::vector<int> myvector(10);
std::iota(myvector.begin(), myvector.end(), 0);