std::lower_bound和函数的复杂度是多少std::upper_bound。
我知道万一std::set<int>是这样log(n),但我不知道std::vector<int>。
我正在使用向量 和 来实现最长递增子序列std::lower_bound。
这段代码的复杂度是多少?
int LIS2(vector<int> a) {
vector<int> v;
for (int i = 0; i < a.size(); i++) {
auto it = lower_bound(v.begin(), v.end(), a[i]);
if (it != v.end())
*it = a[i];
else
v.push_back(a[i]);
}
return v.size();
}
Run Code Online (Sandbox Code Playgroud) 我已经用递归方式打印向量的所有元素,但它返回无意义!它抛出了一个非常奇怪的异常:
Exception thrown: read access violation.
std::vector<int,std::allocator<int> >::operator[](...) returned nullptr.
Run Code Online (Sandbox Code Playgroud)
它输出: 12358000
这是代码。我犯了什么错误?
#include <iostream>
#include <vector>
using namespace std;
int printVec(vector<int>* foo) {
if ((*foo).empty())
return 0;
else {
cout << (*foo)[0];
printVec(foo + 4);
}
}
int main() {
vector<int> ref{ 1,2,3,4,5,6,7,8,9,0 };
printVec(&ref);
}
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
#include <vector>
#include <iostream>
void monitor_vector(std::vector<int> myV)
{
std::vector<int>::iterator it = myV.begin();
std::cout << "Vector size: " << myV.size() << std::endl;
while (*it)
{
std::cout << "Element " << it-myV.begin() << ": " << *it << std::endl;
it++;
}
}
int main()
{
std::vector<int> myVector(4,1);
monitor_vector(myVector);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我创建了一个std::vector<int>包含4元素的元素,并分配每个元素1.当我执行这段代码时,一切都很好.输出显示每个元素.
但是,当我用这一行执行它时
std::vector<int> myVector(4,1);
Run Code Online (Sandbox Code Playgroud)
替换为此行:
std::vector<int> myVector(4,0);
Run Code Online (Sandbox Code Playgroud)
我看不到任何输出.输出是:
yilmazali@yilmazali:~/cpp_practice$ g++ -o la vector_practice.cpp
yilmazali@yilmazali:~/cpp_practice$ ./la
Vector size: 4
yilmazali@yilmazali:~/cpp_practice$
Run Code Online (Sandbox Code Playgroud)
为什么忽略具有默认整数值的元素?他们仍然是那里的成员std::vector.
谢谢你的时间,阿里
我怎样才能用javascript解决这个问题?给我一个更好的解决方案。谁来帮帮我。我对向量感到困惑。它的输入需要一个参数
#include <iostream>
#include <stream>
#include <vector>
using namespace std;
int main() {
ifstream numbers;
numbers.open("G:\\numbers.dat"); // just a file of 10 integers.
int i;
vector<float> vectors;
while(numbers >> i) {
vectors.push_back(i);
}
for(int n=0; n < vectors.size(); ++n ){
cout << vectors[n] << endl;
}
int avg;
for(int k=0; k < vectors.size(); ++k){
// not sure what to put here basically.
cout << avg << endl;
}
numbers.close();
return 0;
Run Code Online (Sandbox Code Playgroud)
}
int main () {
std::vector <int> elements;
elements.push_back (1);
elements [10000] = 102;
std:: cout << elements [10000];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码如何工作?据我所知,矢量的增长率为1.5 - 2倍.那么第10000个元素如何存储在这里?这里的预期行为不是"分段错误"吗?但以上运行成功.
有没有相关的问题
vector< vector<int> > v(m, vector<int>(n));
Run Code Online (Sandbox Code Playgroud)
写得更安全:
vector< vector<int> > v(m);
for (size_t i=0; i<m; i++)
v[i].resize(n);
Run Code Online (Sandbox Code Playgroud) 我在一个类的头文件中有以下内容:
#include <vector>
#include <math.h>
Run Code Online (Sandbox Code Playgroud)
在类描述中,我有以下受保护的成员:
vector<Point2D> samples;
Run Code Online (Sandbox Code Playgroud)
Point2D被定义为一个类
在编译期间我遇到很多错误(C2143,C4430和C2238)
有任何想法吗?
c++ ×7
stdvector ×7
vector ×2
arrays ×1
c++14 ×1
javascript ×1
lis ×1
lower-bound ×1
recursion ×1
upperbound ×1